SQL Server 2005: аудит удаления случайных записей - PullRequest
1 голос
/ 19 февраля 2009

Это может показаться глупым вопросом, но я сейчас нахожусь в ситуации «голова-стена».

Я работаю над огромным приложением ERP, в котором база данных SQL Server 2005 обновляется несколькими разнородными приложениями. Я пытаюсь выяснить, откуда происходит удаление в конкретной таблице.

Я пытался использовать Profiler, но я не смог отфильтровать типы событий настолько, чтобы можно было идентифицировать ошибочный SP, потому что в базу данных каждую секунду попадает так много разных точек. Кроме того, Profiler, кажется, больше ориентирован на поиск изменений DDL или действий типа Object DROP.

Я просто пытаюсь ответить на вопрос: What Stored Proc. или запрос SQL вызвал удаление записи из таблицы X?

Какой инструмент мне следует использовать? Я надеялся избежать чего-то вроде Аудит на основе триггера . Или Profiler - лучший инструмент для такого рода исследований? Или сторонние инструменты - единственный выход?

Пожалуйста, предоставьте любые полезные ссылки, которые вы можете, потому что я относительно незнаком с этой темой.

Ответы [ 2 ]

1 голос
/ 19 февраля 2009

Найти виновника с помощью профилировщика - все равно, что найти иголку в стоге сена, особенно в загруженной системе; если вы не можете найти его с помощью фильтров, которые предлагает edosoft, постарайтесь свести к минимуму шум, устранив статистику с write = 0, фильтруйте по имени приложения, фильтруйте по текстовым данным, не похожим на «% select%»; Вы должны быть в состоянии сузить это.

Если вы действительно в отчаянии, вы можете отказать в разрешении на удаление всем пользователям на столе и дождаться звонка телефона.

Вы также можете запустить иногда SELECT COUNT (*) для таблицы в рабочую таблицу с временными метками и попытаться сопоставить любые падения количества записей с другими действиями.

1 голос
/ 19 февраля 2009

Вы можете использовать SQL Profiler для этого, но вам нужно отфильтровать результаты. Чтобы отслеживать операторы DELETE, выберите события «RPC: Запуск» и «SP: Запуск» и примените фильтр к столбцу TextData: «TextData LIKE '% DELETE% FROM%'».

-Edoode

...