Удаленные Строки Ежедневно - PullRequest
0 голосов
/ 03 января 2012

У меня есть таблица базы данных, из которой одни и те же данные при определенном условии ежедневно теряются в определенное время, как если бы выполнялся такой оператор:

delete * from table where category=1

Я хотел бы перечислить все действия по удалению в этой таблице с помощью сценария SQL, чтобы знать, как именно удаляются записи и каким оператором, пользователем и временем удаления.

У кого-нибудь есть такой скрипт? Или кто-нибудь имел подобный случай и может посоветовать?

Версия SQL - это версия Server 2008 Enterprise Edition.

Ответы [ 2 ]

1 голос
/ 03 января 2012

Если это всего лишь кратковременная проблема отладки, возможно, самый простой способ решить эту проблему - запустить SQL Server Profiler с установленными фильтрами для сбора данных, которые вас интересуют. Код не изменяется таким образом.

Для лучшей производительности попробуйте запустить SQL Profiler на компьютере, отличном от сервера БД, если можете.

1 голос
/ 03 января 2012

Используйте триггер AFTER DELETE для таблицы, чтобы регистрировать удаления в другой таблице вместе с пользователем и временем, когда она была выполнена.

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

Триггер может выглядеть следующим образом

CREATE TABLE YourLogTable
(
  ID int identity primary key,
  Date datetime NOT NULL DEFAULT GETDATE(),
  [User] nvarchar(128) NOT NULL DEFAULT suser_sname(),
  [SqlText] NVARCHAR(MAX),
  [any other interesting columns from deleted rows]
)
GO

CREATE TRIGGER [TR.AD@YourTable]
ON YourTable
AFTER DELETE
AS
BEGIN
  SET NOCOUNT ON;

  DECLARE @sqlText NVARCHAR(MAX)

  SELECT @sqlText = txt.Text
  FROM sys.dm_exec_connections c
  CROSS APPLY sys.dm_exec_sql_text(c.most_recent_sql_handle) txt
  WHERE session_id = @@SPID

  INSERT YourLogTable([SqlText], [any other interesting columns from deleted rows])
  SELECT @SqlText, [any other interesting columns from deleted rows]
  FROM DELETED

END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...