Кто удалил мои строки таблицы sql? - PullRequest
2 голосов
/ 31 мая 2010

У меня есть таблица SQL, из которой данные удаляются. Никто не знает, как данные удаляются. Я добавил триггер и знаю время, однако не выполняется ни одно задание, которое могло бы удалить данные. Я также добавил триггер всякий раз, когда строки удаляются из этой таблицы. Затем я вставляю удаленные строки и SYSTEM_USER в таблицу журнала, однако это не сильно помогает. Что я могу сделать лучше, чтобы знать, кто и как удаляет данные? Будет ли возможно получить идентификатор сервера или что-то? Спасибо за любой совет.

Извините: я использую SQL Server 2000.

** обновление 1 *: Важно выяснить, как данные удаляются - предпочтительно, я хотел бы знать пакет DTS или оператор SQL, который выполняется.

Ответы [ 5 ]

5 голосов
/ 31 мая 2010

Просто предположение, но у вас есть каскады на одной из родительских таблиц (на которые ссылаются внешние ключи). Если это так, то при удалении родительской строки записи в дочерней таблице также удаляются.

3 голосов
/ 31 мая 2010

Если режим восстановления установлен на «Полный», вы можете проверить журналы.

Кроме того, удалите все разрешения на удаление в таблицу. Если это все еще происходит, кто бы это ни делал, у него есть права root / dbo, поэтому смените пароль ...

1 голос
/ 01 июня 2010

Попробуйте на время зарегистрировать все транзакции, даже если это ухудшает производительность.MS предлагает профилировщик mssql, в том числе для экспресс-версий, если это необходимо.С его помощью вы сможете регистрировать транзакции.В качестве альтернативы профилировщикам, вы можете использовать хранимую процедуру trace_build для выгрузки активности в ссылочные файлы, а затем просто «ctrl-f» для любого экземпляра слова «delete» или других похожих ключевых слов.Для получения дополнительной информации см. Эту страницу SO ...

Ведение ВСЕХ запросов в базе данных SQL Server 2008 Express?

Кроме того, и это может показаться глупым, но исследоватьвероятность того, что вы видите, не удаляется.Вместо этого выясните, просто ли записи «обновляются», «заменяются, если они уже существуют», «загружены» или как вы хотите это называть.В Mysql это оператор INSERT ... ON DUPLICATE KEY UPDATE.Я не уверен в варианте MSSQL.

1 голос
/ 31 мая 2010

В какой модели восстановления находится ваша база данных? Если он заполнен Журнал Redgate Rescue бесплатен и работает против SQL2000, что может помочь вам восстановить удаленные данные. Обзорное видео действительно отображает столбец пользователя.

Или вы можете выполнить свой собственный запрос к fn_dblog

0 голосов
/ 31 мая 2010

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

...