前言
Sql Server 2008 开始有扩展事件功能,到 sqlserver 2012 开始,扩展事件有了UI可视化界面操作。在我跟很多客户的工程师(开发,DBA,运维都有)交流过后,发现很少有人喜欢使用扩展事件。我想这是有原因的:首先扩展事件看起来操作更麻烦,建立一个新的事件会话比原来更复杂。其次更重要的是扩展事件没法实时的跟踪语句,会有一段时间的延迟(1分钟左右)
但是扩展事件更轻量,对系统开销更小,并且可以收集更多的信息。以后肯定是会用到越来越普遍的。今天主要分享怎么把profile直接转换为扩展事件,让很多习惯语句使用profiler的同学可以很轻松就转变过来.
正文
创建proflier
首先创建一个profiler。选择好对应的事件并设置好筛选条件
转换为扩展事件
查询出来创建proflier使用的trace id. 可以通过开始和停止profiler,来确定对应的ID
这里借用的是Jonathan Kehayias 提供的脚本,需要的同学可以去下面链接下载
Jonathan Kehayias提供的转换脚本
执行下面的语句,traceid是刚才查询出来的,owentest是自己给扩展事件取的名字
后面2个选项默认。
sp_SQLskills_ConvertTraceToExtendedEvents
@TraceID =3,
@SessionName='owentest',
@PrintOutput = 1,
@Execute = 0
就能够生成创建事件会话的TSQL 语句。执行生成的TSQL语句。
使用创建的会话
找到新建的事件会话并启动
查看实时的监控数据
默认只有如下2个列
可以通过选择,来添加需要的列
选择后的样子
总结
总的来讲,通过一个存储过程可以很轻松的把proflier转换为扩展事件。而且扩展事件慢慢的也会越来越易用。扩展事件是实例级别的。每个连到数据库上的人都可以看,这是proflier没有的。