Столкнулся с задачей написания триггера для аудита изменений схемы базы данных MSSQL Server 2005.
В мсдн нашел пример
CREATE TRIGGER log
ON DATABASE
FOR DDL_DATABASE_LEVEL_EVENTS
AS
DECLARE @data XML
SET @data = EVENTDATA()
CREATE TRIGGER
INSERT ddl_log
(PostTime, DB_User, Event, TSQL)
VALUES
(GETDATE(),
CONVERT(nvarchar(100), CURRENT_USER),
@data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),
@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)') ) ;
Все здорово, но только он не отслеживает изменения названия полей и таблиц.
т.е. после изменения типа поля, у меня появляются вот такие записи в таблице:
12.04.2007 13:32:24 dbo CREATE_TABLE CREATE TABLE dbo.Tmp_Table_1 ( key1 uniqueidentifier NULL, asdf4 ntext NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] ;
CREATE TRIGGER data
12.04.2007 13:32:24 dbo DROP_TABLE DROP TABLE dbo.Table_1 ;
Чисто логически, мне кажется, он пропустил операцию
EXEC sp_rename 'Tmp_Table_1','Table_1'
Подскажите пожалуйста, как написать триггер, который бы отлавливал все события, происходящие со структурой базы данных?