Sqlserver使用TSQL语句开启trace跟踪

官方文档https://docs.microsoft.com/zh-cn/sql/relational-databases/sql-trace/create-a-trace-transact-sql?view=sql-server-ver15

1、查看sqlserver实例是否启用trace跟踪功能
select * from sys.configurations where name=‘default trace enabled’

2、创建跟踪项目,官方文档https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-trace-create-transact-sql?view=sql-server-ver15
declare @TraceID int
declare @TraceFile nvarchar(500)
set @TraceFile=N’T:\tracelog\trace’
declare @maxfilesize bigint
set @maxfilesize=50000
exec sp_trace_Create @TraceID output,2,@TraceFile,@maxfilesize,null,10

3、创建好后,查询新创建的跟踪项目信息
select * from sys.traces

4、为跟踪项目添加事件和事件列,官方文档https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-trace-setevent-transact-sql?view=sql-server-ver15
DECLARE @on BIT
SELECT @on = 1
exec sp_trace_setevent 2,14,6,@on
exec sp_trace_setevent 2,14,8,@on
exec sp_trace_setevent 2,14,10,@on
exec sp_trace_setevent 2,14,11,@on
exec sp_trace_setevent 2,14,14,@on
exec sp_trace_setevent 2,14,26,@on
exec sp_trace_setevent 2,14,34,@on
exec sp_trace_setevent 2,14,35,@on
第一列2表示:上面第三步查询到的新建跟踪项目的跟踪号为2
第二列14表示:跟踪的事件为审核登录,该事件号为14
第三列6表示:跟踪的事件列为NTUserName发起请求的客户端的Microsoft Windows用户名,该事件列的列号为6
第三列8表示:跟踪的事件列为HostName发起请求的客户端计算机的名称,该事件列的列号为8
第三列10表示:跟踪的事件列为ApplicationName客户端应用程序的名称,该事件列的列号为10
第三列11表示:跟踪的事件列为LoginName客户端的SQL Server登录名,该事件列的列号为11
第三列14表示:跟踪的事件列为StartTime事件开始的时间,该事件列的列号为14
第三列26表示:跟踪的事件列为ServerName正在跟踪的SQL Server实例的名称,该事件列的列号为26
第三列35表示:跟踪的事件列为DatabaseName跟踪的数据库的名称,该事件列的列号为35
在这里插入图片描述
5、启动跟踪项目,官方文档https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-trace-setstatus-transact-sql?view=sql-server-ver15
exec sp_trace_setstatus 2,1
第一列2表示:上面第三步查询到的新建跟踪项目的跟踪号为2
第二列1表示:启动

6、查看跟踪的跟踪结果
select * FROM fn_trace_gettable(‘T:\tracelog\trace.trc’,default)
备注:无论你跟踪了哪些事件列,跟踪文件中都会列出所有事件列,只不过没有跟踪的事件列都是空,就像SQL server Profile图形界面只显示你勾选的跟踪事件列,所以sql语句尽量指定列,如下语句
select hostname,applicationname,ntusername,loginname,starttime,servername,databasename FROM fn_trace_gettable(‘T:\tracelog\trace.trc’,default)

7、关闭跟踪项目
exec sp_trace_setstatus 2,0

8、删除跟踪项目
exec sp_trace_setstatus 2,2

Guess you like

Origin blog.csdn.net/lusklusklusk/article/details/109772582