我正在使用觸發器跟蹤DDL更改,但是當我從SQL Server Management Studio更改列名稱時,觸發器無法正常工作?如何獲取SQL Server架構更改,特別是「列名稱」更改
create TRIGGER trgLogDDLEvent ON DATABASE
FOR DDL_DATABASE_LEVEL_EVENTS
FOR
AS
DECLARE @data XML
SET @data = EVENTDATA()
IF @data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)')
<> 'CREATE_STATISTICS'
INSERT INTO db_trc_DDLChangeLog
(
EventType,
ObjectName,
ObjectType,
tsql,
RecDate,
HostName
)
VALUES (
@data.value('(/EVENT_INSTANCE/EventType)[1]',
'nvarchar(100)'),
@data.value('(/EVENT_INSTANCE/ObjectName)[1]',
'nvarchar(100)'),
@data.value('(/EVENT_INSTANCE/ObjectType)[1]',
'nvarchar(100)'),
@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]',
'nvarchar(max)'),
getdate(),
HOST_NAME()
) ;
GO
--select * from db_trc_DDLChangeLog
--create table db_trc_DDLChangeLog
--(
--EventType varchar(max),
--ObjectName varchar(max),
--ObjectType varchar(max),
--tsql varchar(max),
--RecDate datetime,
--HostName varchar(max)
--)
如果您要從對象資源管理器中更改數據庫結構而不是腳本,請立即停止該操作。如果沒有源代碼控制腳本,則不應更改數據庫。 – HLGEM 2010-10-22 13:17:51
我只想跟蹤這個安全變化。 – MahmutHAKTAN 2010-10-22 13:28:44