DATABASE Trigger

--同事給的一個DATABASE Trigger, 要先創建Table:AdministratorLog
CREATE TRIGGER [Admin_Backup_Objects]
ON DATABASE
FOR create_procedure, alter_procedure, drop_procedure,
create_table, alter_table, drop_table,
create_function, alter_function, drop_function,
create_view, alter_view, drop_view
AS
SET NOCOUNT ON

DECLARE @data XML
SET @data = EVENTDATA()
INSERT INTO dbo.AdministratorLog(databasename, EventType,objectname, objecttype, sqlcommand, loginname,hostname,APPName,CommandText)
VALUES(
@data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(256)'),
@data.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(50)'),  -- value is case-sensitive
@data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)'), 
@data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)'), 
@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'varchar(max)'), 
@data.value('(/EVENT_INSTANCE/LoginName)[1]', 'varchar(256)'),
HOST_NAME(),
APP_NAME(),
@data.query('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]')
)
GO


ENABLE TRIGGER [Admin_Backup_Objects] ON DATABASE
GO



猜你喜欢

转载自blog.csdn.net/cdwolfling/article/details/8812841
今日推荐