ITPub博客

首页 > 数据库 > SQL Server > Sqlserver使用TSQL语句开启trace跟踪

Sqlserver使用TSQL语句开启trace跟踪

原创 SQL Server 作者:lusklusklusk 时间:2020-11-18 14:04:35 0 删除 编辑

官方文档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 @
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


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-2734937/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论
Welcome to Lukes DB HOME。 Oracle OCM、Mysql OCP, 8年以上DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    424
  • 访问量
    725224