Как я могу обнаружить операции переименования в таблицах и столбцах?
Мне нужно обнаружить операцию переименования столбцов и таблиц. я могу видеть 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/