Database reference - AdventureWorks2008

AdventureWorks2008 -  triggers -  ddlDatabaseTriggerLog

Description

Database trigger to audit all of the DDL changes made to the AdventureWorks2008 database. Yes! 

Trigger properties

namevalue
nameddlDatabaseTriggerLog
createdMar 19 2009 9:09PM
modifiedMar 19 2009 9:10PM 
is disabled1
is instead of0
is not for replication0
execute ascaller

Trigger types

typeis firstis last
CREATE_TABLE00
ALTER_TABLE00
DROP_TABLE00
CREATE_VIEW00
ALTER_VIEW00
DROP_VIEW00
CREATE_INDEX00
ALTER_INDEX00
DROP_INDEX00
CREATE_XML_INDEX00
ALTER_FULLTEXT_INDEX00
CREATE_FULLTEXT_INDEX00
DROP_FULLTEXT_INDEX00
CREATE_SPATIAL_INDEX00
CREATE_STATISTICS00
UPDATE_STATISTICS00
DROP_STATISTICS00
CREATE_SYNONYM00
DROP_SYNONYM00
CREATE_FUNCTION00
ALTER_FUNCTION00
DROP_FUNCTION00
CREATE_PROCEDURE00
ALTER_PROCEDURE00
DROP_PROCEDURE00
CREATE_TRIGGER00
ALTER_TRIGGER00
DROP_TRIGGER00
CREATE_EVENT_NOTIFICATION00
DROP_EVENT_NOTIFICATION00
CREATE_ASSEMBLY00
ALTER_ASSEMBLY00
DROP_ASSEMBLY00
CREATE_TYPE00
DROP_TYPE00
CREATE_CERTIFICATE00
ALTER_CERTIFICATE00
DROP_CERTIFICATE00
CREATE_USER00
ALTER_USER00
DROP_USER00
ADD_ROLE_MEMBER00
DROP_ROLE_MEMBER00
CREATE_ROLE00
ALTER_ROLE00
DROP_ROLE00
CREATE_APPLICATION_ROLE00
ALTER_APPLICATION_ROLE00
DROP_APPLICATION_ROLE00
CREATE_SCHEMA00
ALTER_SCHEMA00
DROP_SCHEMA00
GRANT_DATABASE00
DENY_DATABASE00
REVOKE_DATABASE00
ALTER_AUTHORIZATION_DATABASE00
CREATE_SYMMETRIC_KEY00
ALTER_SYMMETRIC_KEY00
DROP_SYMMETRIC_KEY00
CREATE_ASYMMETRIC_KEY00
ALTER_ASYMMETRIC_KEY00
DROP_ASYMMETRIC_KEY00
ADD_SIGNATURE_SCHEMA_OBJECT00
DROP_SIGNATURE_SCHEMA_OBJECT00
ADD_SIGNATURE00
DROP_SIGNATURE00
CREATE_MASTER_KEY00
ALTER_MASTER_KEY00
DROP_MASTER_KEY00
CREATE_DATABASE_ENCRYPTION_KEY00
ALTER_DATABASE_ENCRYPTION_KEY00
DROP_DATABASE_ENCRYPTION_KEY00
CREATE_DATABASE_AUDIT_SPECIFICATION00
ALTER_DATABASE_AUDIT_SPECIFICATION00
DROP_DATABASE_AUDIT_SPECIFICATION00
CREATE_MESSAGE_TYPE00
ALTER_MESSAGE_TYPE00
DROP_MESSAGE_TYPE00
CREATE_CONTRACT00
DROP_CONTRACT00
CREATE_QUEUE00
ALTER_QUEUE00
DROP_QUEUE00
CREATE_SERVICE00
ALTER_SERVICE00
DROP_SERVICE00
CREATE_ROUTE00
ALTER_ROUTE00
DROP_ROUTE00
CREATE_REMOTE_SERVICE_BINDING00
ALTER_REMOTE_SERVICE_BINDING00
DROP_REMOTE_SERVICE_BINDING00
CREATE_BROKER_PRIORITY00
ALTER_BROKER_PRIORITY00
DROP_BROKER_PRIORITY00
CREATE_XML_SCHEMA_COLLECTION00
ALTER_XML_SCHEMA_COLLECTION00
DROP_XML_SCHEMA_COLLECTION00
CREATE_PARTITION_FUNCTION00
ALTER_PARTITION_FUNCTION00
DROP_PARTITION_FUNCTION00
CREATE_PARTITION_SCHEME00
ALTER_PARTITION_SCHEME00
DROP_PARTITION_SCHEME00
BIND_DEFAULT00
CREATE_DEFAULT00
DROP_DEFAULT00
UNBIND_DEFAULT00
ALTER_EXTENDED_PROPERTY00
CREATE_EXTENDED_PROPERTY00
DROP_EXTENDED_PROPERTY00
ALTER_FULLTEXT_CATALOG00
CREATE_FULLTEXT_CATALOG00
DROP_FULLTEXT_CATALOG00
ALTER_PLAN_GUIDE00
CREATE_PLAN_GUIDE00
DROP_PLAN_GUIDE00
BIND_RULE00
CREATE_RULE00
DROP_RULE00
UNBIND_RULE00
CREATE_FULLTEXT_STOPLIST00
ALTER_FULLTEXT_STOPLIST00
DROP_FULLTEXT_STOPLIST00
RENAME00

Code

CREATE TRIGGER [ddlDatabaseTriggerLog] ON DATABASE 
FOR DDL_DATABASE_LEVEL_EVENTS AS 
BEGIN
    SET NOCOUNT ON;

    DECLARE @data XML;
    DECLARE @schema sysname;
    DECLARE @object sysname;
    DECLARE @eventType sysname;

    SET @data = EVENTDATA();
    SET @eventType = @data.value('(/EVENT_INSTANCE/EventType)[1]', 'sysname');
    SET @schema = @data.value('(/EVENT_INSTANCE/SchemaName)[1]', 'sysname');
    SET @object = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname') 

    IF @object IS NOT NULL
        PRINT '  ' + @eventType + ' - ' + @schema + '.' + @object;
    ELSE
        PRINT '  ' + @eventType + ' - ' + @schema;

    IF @eventType IS NULL
        PRINT CONVERT(nvarchar(max), @data);

    INSERT [dbo].[DatabaseLog] 
        (
        [PostTime], 
        [DatabaseUser], 
        [Event], 
        [Schema], 
        [Object], 
        [TSQL], 
        [XmlEvent]
        ) 
    VALUES 
        (
        GETDATE(), 
        CONVERT(sysname, CURRENT_USER), 
        @eventType, 
        CONVERT(sysname, @schema), 
        CONVERT(sysname, @object), 
        @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(max)'), 
        @data
        );
END;



Documentation generated by SqlSpec