Как я могу обнаружить операции переименования в таблицах и столбцах?

Мне нужно обнаружить операцию переименования столбцов и таблиц. я могу видеть alter, drop а также create операция в этом запросе:

DECLARE   @filename nvarchar(1000);

SELECT   @filename = cast(value as nvarchar(1000))
FROM   ::fn_trace_getinfo(default)
WHERE   traceid = 1 and   property = 2;

SELECT   *
FROM   fn_trace_gettable(@filename, default) AS ftg 
INNER   JOIN sys.trace_events AS te ON ftg.EventClass = te.trace_event_id  
left outer join sys.all_objects o on o.name = ftg.ObjectName
order by EventSequence DESC;

Но когда кто-то переименовывает таблицу или столбец в MSSQL Management Studio, я не могу определить этот запрос. Есть ли другой способ сделать это?

С уважением.

1 ответ

Решение

Вы можете создать триггер базы данных. Список доступных событий: [sys].[events] (имеются ALTER_COLUMN событие)

Пример из msdn:

CREATE TRIGGER safety   
ON DATABASE   
FOR DROP_SYNONYM  
AS   
   RAISERROR ('You must disable Trigger "safety" to drop synonyms!',10, 1)  
   ROLLBACK  
GO  
DROP TRIGGER safety  
ON DATABASE;  
GO  

другой пример: https://www.mssqltips.com/sqlservertip/2085/sql-server-ddl-triggers-to-track-all-database-changes/

Другие вопросы по тегам