Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save MarshalOfficial/07538e3559741171bfcd to your computer and use it in GitHub Desktop.
Save MarshalOfficial/07538e3559741171bfcd to your computer and use it in GitHub Desktop.
this trigger log events targeted by It's definition in "DbChangesLog" table ... like create table,alter table, etc ...
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[DbChangesLog](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[SaveTime] [datetime] NULL,
[DatabaseName] [varchar](max) NULL,
[Event] [varchar](max) NULL,
[ObjectName] [varchar](max) NULL,
[TSQL] [text] NULL,
[Login] [varchar](max) NULL,
CONSTRAINT [PK_DbChangesLog] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [AuditChanges]
ON DATABASE
FOR CREATE_FUNCTION,
ALTER_FUNCTION,
DROP_FUNCTION,
CREATE_PROCEDURE,
ALTER_PROCEDURE,
DROP_PROCEDURE,
CREATE_TABLE,
ALTER_TABLE,
DROP_TABLE,
CREATE_TRIGGER,
ALTER_TRIGGER,
DROP_TRIGGER,
CREATE_VIEW,
ALTER_VIEW,
DROP_VIEW,
RENAME--DDL_DATABASE_LEVEL_EVENTS
--CREATE_PROC, ALTER_PROC, DROP_PROC, CREATE_TABLE, ALTER_TABLE, DROP_TABLE
AS
SET NOCOUNT ON
SET ARITHABORT ON
SET ANSI_PADDING ON
DECLARE @ed XML
SET @ed = EVENTDATA()
INSERT INTO [DbChangesLog] ([SaveTime], [DatabaseName], [Event], [ObjectName], [TSQL], [Login])
VALUES
(
GetDate(),
@ed.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(max)'),
@ed.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(max)'),
@ed.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(max)'),
@ed.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'varchar(max)'),
@ed.value('(/EVENT_INSTANCE/LoginName)[1]', 'varchar(max)')
)
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
DISABLE TRIGGER [AuditChanges] ON DATABASE
GO
ENABLE TRIGGER [AuditChanges] ON DATABASE
GO
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment