Проверьте, кто / когда обновил столбец в SQL Server - PullRequest
0 голосов
/ 09 апреля 2019

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

SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'MYDB') --DB Name
AND OBJECT_ID=OBJECT_ID('MyTable') --Table Name

Есть ли другой точный способ ответить на этот вопрос?

1 Ответ

4 голосов
/ 09 апреля 2019

Если вы говорите о том, кто изменил структуру таблицы

Если это было достаточно недавно, он все еще может быть захвачен в скользящем следе по умолчанию :

DECLARE @path NVARCHAR(260);

SELECT 
   @path = REVERSE(SUBSTRING(REVERSE([path]), 
   CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM    sys.traces
WHERE   is_default = 1;

SELECT 
  LoginName,
  HostName,
  StartTime,
  ObjectName,
  TextData
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass = 164    -- Object:Altered
AND EventSubClass = 1
ORDER BY StartTime DESC;

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

Если вы говорите о том, кто изменил данные в таблице

SQL Server не отслеживает эти данные.Вы можете просмотреть комбинацию триггеров DML, аудита SQL, отслеживания изменений, сбора данных изменений, временных таблиц .Ваш выбор будет зависеть от вашей версии и редакции SQL Server, объема данных, изменяемых, и таблиц, которые вы хотите отслеживать ...

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