Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
dalx Member Откуда: Сообщений: 43 |
Доброго времени суток. Возникла некая задача по работе с БД, но не уверен, что для того что мне надо я смогу воспользоваться логом. Собственно имеется некая БД в которой вносится, ведётся разного рода документация. Софт самописный. Структура БД - мягко говоря - нестандартная. Потребовалось ввести систему контроля работы операторов. В рамках которой, в первую очередь, требуется контролировать (для оценки трудоёмкости) кто, что, когда и сколько ввёл/исправил/удалил данных. Ну и до кучи - было бы неплохо иметь тут же возможность отследить - не упорол ли кто косяка при вводе/корректировке и т.д. По идее - можно добавить новую таблицу (или группу таблиц), навесить на требуемые таблицы триггера и сохранять в эту новую записи о добавлении, корректировке и т.п. Но, насколько я понимаю, этим сервер и так занимается самостоятельно, записывая всё в лог. И вроде как не рачительно навешивать свой функционал, если он уже есть и им надо только воспользоваться. Во всяком случае - ковыряя в своё время лог некой тулзой (кажется ApexSQL) я находил всё требуемое мне (кто, что, когда и т.д.). В то же время - если я не ошибаюсь, то работа с логом - не документирована. А через fn_dblog и иже с ними можно через SQL запрос получить данные только от последнего запуска сервера (предыдущие транзакции в файле вроде как есть, но вытаскивать их надо уже как-то иначе). Если я ошибаюсь - плиз - поправьте меня. Собственно вопрос - стоит ли возиться с логом? Если да и всё требуемое мне там есть - быть может подскажете места где можно порыться на предмет инфы по тому что там да как? Или всё же не стоит оно того, и лучше реализовать всё самому (а full модель можно отключить, для сохранности места ибо бекапы делаются еженощно)? Если подобная тема холивар и/или боян - сорри. Я скорее программер нежели админ БД и это для меня ново. Ткните носом где про сие можно почитать, бо для поиска я не придумал как сформулировать. А может кто занимался подобной задачей и поделится иной идеей для её решения - буду признателен. Заранее благодарю за ответы... |
16 мар 16, 05:30 [18936246] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
Журнал базы не предназначен для ковыряния в нем кривыми ручками. В MS SQL нет никаких средств чтения журнала. И, наверное, не будет. ЗЫ. Ну и вы плохо представляете, что именно пишется в журнал. |
16 мар 16, 06:23 [18936260] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
Ищите по ключевым словам CDC, Audit, Extended Events и т.д. Да чего там, SQL Trace и Profiler тоже. |
16 мар 16, 09:32 [18936506] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Поправляю - время сохранение информации в журнале не зависит от времени запуска/работы сервера.
Каков бюджет вашего проекта на "возиться с логом" ? И какова цель проекта ? Создать конкурента ApexSQL-ю ? Или все же иметь аудит вашей отдельной системы ?
Если вам нужен аудит, то аудит есть перехват событий. А не лазание по журналу, в котором непонятно сколько и за какой период есть данные. |
||||||
16 мар 16, 09:44 [18936537] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2395 |
неправильно понимаете короче - все самостоятельно |
||
16 мар 16, 09:52 [18936556] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
Про аудит вам уже написали, а про "поправьте" Вы неправильно понимаете, что и зачем сервер пишет в лог и что такое модель восстановления. Fn_dblog никак не завязана на рестарт сервера, она показывает то, что в данный момент записано в логе. А лог мог перезаписаться сколько угодно раз с момента рестарта. Если модель полная, то прежде чем сервер сможет перезаписать лог, должен быть проделан бэкап лога. Тогда ничего из лога не теряется, а искать можно уже в бэкапе, используя fn_dump_dblog. Только полная модель не для того, чтобы рыться в бэкапах лога, а чтобы иметь возможность восстановить базу на произвольный момент времени, а не на момент снятия полного бэкапа (как в простой модели). Поэтому переключают full на simple не когда "передумали копаться в логе", а когда допустимо данные терять с момента последнего полного/дифф бэкапа |
||
16 мар 16, 09:56 [18936569] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
|
||
17 мар 16, 01:00 [18941053] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
Я, например, использую Extended Events, чтобы мониторить DDL-операции пользователей.
http://stackoverflow.com/questions/869300/sql-server-2008-change-data-capture-who-made-the-change |
||||
17 мар 16, 09:53 [18941496] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
|
||||||||||||||||
17 мар 16, 20:48 [18945378] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |