April 5, 2013 at 9:26 am
I was wondering if a SQL trace could be set up to track changes to SQL Server, so I can track who is making changes and keep the Recovery Document up to date. So I would not want to track things... like users and logins. In fact I do not need to track anything below the database level, but one issue that came up today... was that someone had deleted a linked server.
Going through Profiler, I tried to build the trace... but I am not sure if my selections are correct.
-- Trying to create a trace to caputre changes to the SQL Server Instance
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
declare @OutputFileName nvarchar(256)
set @maxfilesize = 10
set @OutputFileName = 'F:\tracefiles\Track_Instance_Changes' + '_' + convert(varchar(20), getdate(),112) + Replace(convert(varchar(20), getdate(),108),':','')
exec @rc = sp_trace_create @TraceID output, 0, @OutputFileName, @maxfilesize, NULL
if (@rc != 0) goto error
-- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 117, 7, @on
exec sp_trace_setevent @TraceID, 117, 23, @on
exec sp_trace_setevent @TraceID, 117, 8, @on
exec sp_trace_setevent @TraceID, 117, 40, @on
exec sp_trace_setevent @TraceID, 117, 64, @on
exec sp_trace_setevent @TraceID, 117, 1, @on
exec sp_trace_setevent @TraceID, 117, 9, @on
exec sp_trace_setevent @TraceID, 117, 41, @on
exec sp_trace_setevent @TraceID, 117, 49, @on
exec sp_trace_setevent @TraceID, 117, 6, @on
exec sp_trace_setevent @TraceID, 117, 10, @on
exec sp_trace_setevent @TraceID, 117, 14, @on
exec sp_trace_setevent @TraceID, 117, 26, @on
exec sp_trace_setevent @TraceID, 117, 50, @on
exec sp_trace_setevent @TraceID, 117, 3, @on
exec sp_trace_setevent @TraceID, 117, 11, @on
exec sp_trace_setevent @TraceID, 117, 35, @on
exec sp_trace_setevent @TraceID, 117, 51, @on
exec sp_trace_setevent @TraceID, 117, 12, @on
exec sp_trace_setevent @TraceID, 117, 44, @on
exec sp_trace_setevent @TraceID, 117, 60, @on
exec sp_trace_setevent @TraceID, 117, 5, @on
exec sp_trace_setevent @TraceID, 117, 21, @on
exec sp_trace_setevent @TraceID, 117, 29, @on
exec sp_trace_setevent @TraceID, 117, 37, @on
exec sp_trace_setevent @TraceID, 129, 7, @on
exec sp_trace_setevent @TraceID, 129, 23, @on
exec sp_trace_setevent @TraceID, 129, 8, @on
exec sp_trace_setevent @TraceID, 129, 40, @on
exec sp_trace_setevent @TraceID, 129, 64, @on
exec sp_trace_setevent @TraceID, 129, 1, @on
exec sp_trace_setevent @TraceID, 129, 41, @on
exec sp_trace_setevent @TraceID, 129, 49, @on
exec sp_trace_setevent @TraceID, 129, 6, @on
exec sp_trace_setevent @TraceID, 129, 10, @on
exec sp_trace_setevent @TraceID, 129, 14, @on
exec sp_trace_setevent @TraceID, 129, 26, @on
exec sp_trace_setevent @TraceID, 129, 34, @on
exec sp_trace_setevent @TraceID, 129, 50, @on
exec sp_trace_setevent @TraceID, 129, 3, @on
exec sp_trace_setevent @TraceID, 129, 11, @on
exec sp_trace_setevent @TraceID, 129, 35, @on
exec sp_trace_setevent @TraceID, 129, 51, @on
exec sp_trace_setevent @TraceID, 129, 4, @on
exec sp_trace_setevent @TraceID, 129, 12, @on
exec sp_trace_setevent @TraceID, 129, 28, @on
exec sp_trace_setevent @TraceID, 129, 60, @on
exec sp_trace_setevent @TraceID, 129, 5, @on
exec sp_trace_setevent @TraceID, 129, 21, @on
exec sp_trace_setevent @TraceID, 129, 29, @on
exec sp_trace_setevent @TraceID, 129, 37, @on
exec sp_trace_setevent @TraceID, 178, 7, @on
exec sp_trace_setevent @TraceID, 178, 23, @on
exec sp_trace_setevent @TraceID, 178, 8, @on
exec sp_trace_setevent @TraceID, 178, 40, @on
exec sp_trace_setevent @TraceID, 178, 64, @on
exec sp_trace_setevent @TraceID, 178, 1, @on
exec sp_trace_setevent @TraceID, 178, 41, @on
exec sp_trace_setevent @TraceID, 178, 49, @on
exec sp_trace_setevent @TraceID, 178, 6, @on
exec sp_trace_setevent @TraceID, 178, 10, @on
exec sp_trace_setevent @TraceID, 178, 14, @on
exec sp_trace_setevent @TraceID, 178, 26, @on
exec sp_trace_setevent @TraceID, 178, 34, @on
exec sp_trace_setevent @TraceID, 178, 50, @on
exec sp_trace_setevent @TraceID, 178, 3, @on
exec sp_trace_setevent @TraceID, 178, 11, @on
exec sp_trace_setevent @TraceID, 178, 35, @on
exec sp_trace_setevent @TraceID, 178, 51, @on
exec sp_trace_setevent @TraceID, 178, 4, @on
exec sp_trace_setevent @TraceID, 178, 12, @on
exec sp_trace_setevent @TraceID, 178, 28, @on
exec sp_trace_setevent @TraceID, 178, 60, @on
exec sp_trace_setevent @TraceID, 178, 21, @on
exec sp_trace_setevent @TraceID, 178, 29, @on
exec sp_trace_setevent @TraceID, 178, 37, @on
exec sp_trace_setevent @TraceID, 130, 7, @on
exec sp_trace_setevent @TraceID, 130, 23, @on
exec sp_trace_setevent @TraceID, 130, 39, @on
exec sp_trace_setevent @TraceID, 130, 8, @on
exec sp_trace_setevent @TraceID, 130, 40, @on
exec sp_trace_setevent @TraceID, 130, 64, @on
exec sp_trace_setevent @TraceID, 130, 1, @on
exec sp_trace_setevent @TraceID, 130, 41, @on
exec sp_trace_setevent @TraceID, 130, 49, @on
exec sp_trace_setevent @TraceID, 130, 10, @on
exec sp_trace_setevent @TraceID, 130, 26, @on
exec sp_trace_setevent @TraceID, 130, 34, @on
exec sp_trace_setevent @TraceID, 130, 42, @on
exec sp_trace_setevent @TraceID, 130, 50, @on
exec sp_trace_setevent @TraceID, 130, 3, @on
exec sp_trace_setevent @TraceID, 130, 11, @on
exec sp_trace_setevent @TraceID, 130, 35, @on
exec sp_trace_setevent @TraceID, 130, 43, @on
exec sp_trace_setevent @TraceID, 130, 51, @on
exec sp_trace_setevent @TraceID, 130, 4, @on
exec sp_trace_setevent @TraceID, 130, 12, @on
exec sp_trace_setevent @TraceID, 130, 28, @on
exec sp_trace_setevent @TraceID, 130, 60, @on
exec sp_trace_setevent @TraceID, 130, 21, @on
exec sp_trace_setevent @TraceID, 130, 29, @on
exec sp_trace_setevent @TraceID, 130, 37, @on
exec sp_trace_setevent @TraceID, 130, 6, @on
exec sp_trace_setevent @TraceID, 130, 14, @on
exec sp_trace_setevent @TraceID, 118, 7, @on
exec sp_trace_setevent @TraceID, 118, 23, @on
exec sp_trace_setevent @TraceID, 118, 8, @on
exec sp_trace_setevent @TraceID, 118, 40, @on
exec sp_trace_setevent @TraceID, 118, 64, @on
exec sp_trace_setevent @TraceID, 118, 1, @on
exec sp_trace_setevent @TraceID, 118, 9, @on
exec sp_trace_setevent @TraceID, 118, 41, @on
exec sp_trace_setevent @TraceID, 118, 49, @on
exec sp_trace_setevent @TraceID, 118, 6, @on
exec sp_trace_setevent @TraceID, 118, 10, @on
exec sp_trace_setevent @TraceID, 118, 14, @on
exec sp_trace_setevent @TraceID, 118, 26, @on
exec sp_trace_setevent @TraceID, 118, 34, @on
exec sp_trace_setevent @TraceID, 118, 50, @on
exec sp_trace_setevent @TraceID, 118, 3, @on
exec sp_trace_setevent @TraceID, 118, 11, @on
exec sp_trace_setevent @TraceID, 118, 35, @on
exec sp_trace_setevent @TraceID, 118, 51, @on
exec sp_trace_setevent @TraceID, 118, 4, @on
exec sp_trace_setevent @TraceID, 118, 12, @on
exec sp_trace_setevent @TraceID, 118, 28, @on
exec sp_trace_setevent @TraceID, 118, 60, @on
exec sp_trace_setevent @TraceID, 118, 5, @on
exec sp_trace_setevent @TraceID, 118, 21, @on
exec sp_trace_setevent @TraceID, 118, 29, @on
exec sp_trace_setevent @TraceID, 118, 37, @on
exec sp_trace_setevent @TraceID, 176, 7, @on
exec sp_trace_setevent @TraceID, 176, 23, @on
exec sp_trace_setevent @TraceID, 176, 8, @on
exec sp_trace_setevent @TraceID, 176, 40, @on
exec sp_trace_setevent @TraceID, 176, 64, @on
exec sp_trace_setevent @TraceID, 176, 1, @on
exec sp_trace_setevent @TraceID, 176, 9, @on
exec sp_trace_setevent @TraceID, 176, 41, @on
exec sp_trace_setevent @TraceID, 176, 49, @on
exec sp_trace_setevent @TraceID, 176, 10, @on
exec sp_trace_setevent @TraceID, 176, 26, @on
exec sp_trace_setevent @TraceID, 176, 34, @on
exec sp_trace_setevent @TraceID, 176, 50, @on
exec sp_trace_setevent @TraceID, 176, 3, @on
exec sp_trace_setevent @TraceID, 176, 11, @on
exec sp_trace_setevent @TraceID, 176, 35, @on
exec sp_trace_setevent @TraceID, 176, 51, @on
exec sp_trace_setevent @TraceID, 176, 4, @on
exec sp_trace_setevent @TraceID, 176, 12, @on
exec sp_trace_setevent @TraceID, 176, 28, @on
exec sp_trace_setevent @TraceID, 176, 60, @on
exec sp_trace_setevent @TraceID, 176, 21, @on
exec sp_trace_setevent @TraceID, 176, 29, @on
exec sp_trace_setevent @TraceID, 176, 37, @on
exec sp_trace_setevent @TraceID, 176, 45, @on
exec sp_trace_setevent @TraceID, 176, 6, @on
exec sp_trace_setevent @TraceID, 176, 14, @on
exec sp_trace_setevent @TraceID, 176, 46, @on
-- Set the Filters
declare @intfilter int
declare @bigintfilter bigint
-- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1
-- display trace id for future references
select TraceID=@TraceID
goto finish
error:
select ErrorCode=@rc
finish:
go
April 5, 2013 at 9:38 am
Have you considered DDL triggers?
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability
April 5, 2013 at 11:07 am
I take it.. from your reply... that it is possible to put triggers on Instance level settings.. like Linked Servers, Job Log settings, ect... not sure how to do that, I do know how to create a trigger on a table... I guess Microsoft is storing that data someplace, but not sure where... or even if it is one of the system databases that we have access to (msdb, or master would be the only two that I would guess this data is stored in... that is not a hidden database)
April 5, 2013 at 1:05 pm
System tables in the master database, but no, I was not suggesting DML triggers on the system tables.
DDL triggers
http://msdn.microsoft.com/en-us/library/ms190989%28v=sql.105%29.aspx
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability
April 5, 2013 at 2:10 pm
Thanks for your help.. I will review your link next week! 😎
Viewing 5 posts - 1 through 4 (of 4 total)
You must be logged in to reply to this topic. Login to reply