hd87715 发表于 2019-10-17 10:42:53

SQL Server Profiler查询跟踪的简单使用

SQL Server Profiler是一个功能丰富的界面,用于创建和管理跟踪,并分析和重播跟踪结果。它的作用有很多,我们这里主要介绍通过捕获ERP系统中的事件来解决SQL Server中的问题,对我们的测试工作和问题的解决都很有帮助。



工具/原料

[*]SQL Server Profiler

[*]ERP二开工具

[*]https://jingyan.baidu.com/article/1612d500ab7d93e20e1eeec4.html



(一)跟踪的建立与介绍:

[*]1
打开SQL Server Management Studio,选择工具->SQL Server Profiler,或者直接从路径:开始/程序/Microsoft SQL Server 2008 R2 /性能工具/SQL Server Profiler。

https://imgsa.baidu.com/exp/w=500/sign=9183843fb28f8c54e3d3c52f0a2b2dee/94cad1c8a786c91741ec10e8cf3d70cf3ac75777.jpg


[*]2
连接对应的数据库服务器。

https://imgsa.baidu.com/exp/w=500/sign=0b7bd42d7ad98d1076d40c31113eb807/ca1349540923dd5473e8e5b9d709b3de9d824843.jpg


[*]3
连接数据库后,直接打开跟踪新增界面,或者在路径:文件->新建跟踪下新增跟踪,连接数据库。
如下图页面,常规页可以不用管,直接界面默认的就可以,点击事件选择页,显示所有事件和显示所有列的复选框打上勾。

https://imgsa.baidu.com/exp/w=500/sign=d37290f096ef76c6d0d2fb2bad17fdf6/838ba61ea8d3fd1f779be0eb364e251f94ca5f54.jpg


[*]4
选择事件,将需要显示的列打上勾,这样才会在跟踪的时候,显示出这些列;

https://imgsa.baidu.com/exp/w=500/sign=8b167da7f41fbe091c5ec3145b620c30/902397dda144ad34a95fc556d6a20cf430ad857b.jpg


[*]5
由于服务器上的数据库比较多,所以跟踪的时候要过滤掉一些,只看当前用户需要查看的数据库,这就用到列筛选器功能,点击上图中的“列筛选器”,选择要做设置的列,输入条件,
如下图,只要查看数据库ID为6的数据库,DatabaseID是每个数据库的唯一标识,可用语句select DB_ID('AIO5_Test')查询得到,当然也可以过滤DatabaseName列。其它需要请自行设置。

https://imgsa.baidu.com/exp/w=500/sign=cbebb5f0748b4710ce2ffdccf3cfc3b2/ac4bd11373f082022be5dcee4dfbfbedaa641bef.jpg
https://imgsa.baidu.com/exp/w=500/sign=52f114c664d0f703e6b295dc38f85148/d52a2834349b033b8357be0b13ce36d3d439bd00.jpg


[*]6
事件的选择与取消,右击需要选择或取消选择的事件,点击取消选择事件类别,会将所属事件全部取消,也可以展开,单个勾选;

https://imgsa.baidu.com/exp/w=500/sign=62e93be968061d957d4637384bf60a5d/bf096b63f6246b60c7dbf0a5edf81a4c500fa20e.jpg


[*]7
存模板,可以将我们设置好的跟踪作为自己的模板,这样在下次使用的时候就不需要重复设置,以上步骤都设置好后,点击运行,然后点击文件->另存为->跟踪模板;

https://imgsa.baidu.com/exp/w=500/sign=bf970a6a4110b912bfc1f6fef3fcfcb5/d01373f082025aafd689331afdedab64024f1aa3.jpg


[*]8
取模板名称:

https://imgsa.baidu.com/exp/w=500/sign=1dfa41f3b51bb0518f24b328067bda77/a1ec08fa513d2697ed63458c53fbb2fb4216d8ab.jpg


[*]9
下次打开,直接选择我们保存的跟踪模板即可。

https://imgsa.baidu.com/exp/w=500/sign=e0ade8b39e22720e7bcee2fa4bca0a3a/b3119313b07eca808c627436972397dda04483f8.jpg

END



(二)跟踪的运行示例:

[*]
ERP中执行EV不成功。

https://imgsa.baidu.com/exp/w=500/sign=4f53b074d743ad4ba62e46c0b2035a89/8ad4b31c8701a18b11b65f9e982f07082938fe86.jpg


[*]
查看对应的EV,也没什么异常。

https://imgsa.baidu.com/exp/w=500/sign=404fc4dfb73533faf5b6932e98d2fdca/0ff41bd5ad6eddc4084df92a3fdbb6fd536633bc.jpg


[*]
跟踪运行后,找到对应的EV执行的语句,由跟踪出的查询可以看出,该EV的DocEntry没有获取到值,导致EV运行失败,而LineNum获取到了值,由此猜测是否由于控件设置中没有将DocEntry字段开出。

https://imgsa.baidu.com/exp/w=500/sign=2ef3a52557da81cb4ee683cd6267d0a4/42a98226cffc1e17091fc1e04c90f603728de9bb.jpg


[*]
生成控件设置,开出DocEntry字段。

https://imgsa.baidu.com/exp/w=500/sign=5be9d385054f78f0800b9af349300a83/e824b899a9014c08ce0265740c7b02087bf4f422.jpg


[*]
再次执行EV,成功注销行。

https://imgsa.baidu.com/exp/w=500/sign=4210cfa445a98226b8c12b27ba80b97a/0bd162d9f2d3572cb80bd10d8c13632763d0c372.jpg


[*]
再次查看跟踪结果,DocEntry获取到了值。

https://imgsa.baidu.com/exp/w=500/sign=c7b5b2f24f540923aa69637ea259d1dc/738b4710b912c8fc89caba1cfa039245d6882121.jpg

END



注意事项

[*]列筛选器 设置时, Duration 也是常用的项目,比如设置“大于 1000ms ",用于跟踪执行时间大于 1000ms 的查询,为优化系统提供分析数据。




hd87715 发表于 2019-10-17 10:43:34

sqlserver profiler怎么找不到databaseid

勾选“显示所有列”就有了
页: [1]
查看完整版本: SQL Server Profiler查询跟踪的简单使用