事情起因公司业务出现操作失败,应用层日志显示数据库操作超时,需要对数据库进行抓包
由于数据库是2008r2 比较老,微软这边不提供了技术支持,官方提供的工具pssd无法使用,通过和微软联系让其提供了脚本(在业务高峰期操作,但不影响业务)
抓取性能数据的脚本,分为SQL部分和Windows部分,由于SQL的trace数据是由SQL服务账号的权限进行写操作,担心权限不足,故不放在系统磁盘,请先在SQL数据文件所在共享盘创建文件夹,例如SQL数据文件存放于Z盘SQLDATA目录,则在Z盘对应SQL数据文件SQLDATA目录创建pssd文件夹,即Z:\SQLDATA\pssd文件夹,后续将所有数据均存放于此文件夹内。
- SQL部分
CollectTsql.sql,只需修改其中路径d:\pssd\CollectTsqlTrace为之前创建的目录,例如Z:\SQLDATA\pssd\CollectTsqlTrace即可,修改完成后可以直接执行。此步骤为抓取语句执行性能数据,阻塞,死锁和异常事件,存放于Z:\SQLDATA\pssd\CollectTsqlTrace.trc文件。
关闭跟踪项目
exec sp_trace_setstatus 2,0
删除跟踪项目
exec sp_trace_setstatus 2,2
开启跟踪
exec sp_trace_setstatus 2, 1
- Windows部分
将附件CreatePerfmonCollector.txt和SQL_PerfList.txt拷贝至之前创建的目录,例如Z:\SQLDATA\pssd,之后打开CreatePerfmonCollector.txt,修改SQL_PerfList.txt为实际路径,将-o 参数的路径修改为之前创建的目录,例如Z:\SQLDATA\pssd\SQLPerf。修改完成后将脚本复制到管理员的命令行中执行即可。此步骤为抓取Windows性能计数器,将结果存于Z:\SQLDATA\pssd\SQLPerf_0001.blg文件