设为首页 收藏本站
查看: 1123|回复: 0

[经验分享] 使用SQLdiag合并数据采集----初识SQLdiag

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-18 10:08:40 | 显示全部楼层 |阅读模式
SQLdiag是一个收集SQL Server实例诊断数据的多用途实用工具,可以以控制台应用程序或服务的形式运行。SQLdiag能够通过配置管理器的可扩展接口帮你收集SQL Server Profiler追踪,Windows Performance Monitor日志,并输出不同的VBScript、T-SQL、及DOS scripts。SQLdiag收集的数据可以通过SQL Nexus导入SQL Server数据库,SQL Nexus是一个GUI工具,可以以报表格式提供收集到的数据的聚合视图。
SQLdiag是一个命令行实用工具,默认在C:\Program Files\Microsoft SQL Server\110\Tools\Binn。你可以以3种模式运行SQLdiag:
  • 使用/X命令行参数的快照模式;
  • 指定一个或多个命令行参数的命令行应用程序;
  • 作为一个服务
以快照模式使用SQLdiag
当SQLdiag以快照模式运行时,它会收集所有配置的诊断数据的快照,然后自动关闭。如果你在命令提示窗口执行SQLDIAG /X,SQLdiag就会在Binn文件夹里创建一个SQLDIAG文件夹,它包含所有收集到的数据。你还会发现一个“internal”的文件夹,它包含工具创建的日志文件,这些文件和XML配置文件一起,配置文件是用于在其他文件中收集数据。当你想要快速获得SQL Server实例状态的快照时,这种收集数据的方法就非常有用。你会获得过量的SQL Server和Windows配置信息、最近遇到的错误、数据库引擎经历的等待,以及更多信息。数据收集完成后,工具会提示消息“SQLDIAG Collection complete. Collector exiting”自动关闭。默认的快照数据收集如下信息:
  • SQL Server默认的追踪
  • MSINFO32输出的文本文件
  • 一个<MachineName>_<InstanceName>_sp_sqldiag_Shutdown.OUT文本文件,它包含如下数据:所有的Errorlogs、各种系统存储过程的输出(为了获取实例和数据库配置的细节)、不同的DMV(如sys.sysprocesses, sys.dm_exec_sessions, and sys.dm_os_wait_stats)和系统目录的输出,以获取额外的信息(实例的内存使用、SQL Server PerfMon计数器当前值的快照,SQL Server等待统计的快照,活动在SQL Server实例上的对话及需求的状态,以及相关的输入缓冲,SQL Server调度器的状态)。
作为一个命令行应用程序来使用SQLdiag
看SQLdiag数据采集之前,你首先应该理解SQLdiag配置文件,以便恰当地配置不同的数据采集器。图11-1显示了SQLDIAG.XML配置文件的关键元素的截图: SouthEast.jpg
SQLdiag配置文件关键元素
  • Machine Name句点(.)表示数据采集来自本机
  • Instance Name(*)表示采集机器上所有实例的数据
  • EventlogCollector表示是否要采集Windows Event Logs
  • PerfmonCollector表示是否要采集PerfMon数据,pollinginterval和maxfilesize分别表示两个连续取样的时间间隔和.blg PerfMon文件的最大大小
  • SqldiagCollector指定是否要采集SQLdiag输出文件
  • ProfilerCollector指定抓取SQL Server Profiler事件,连同所有的Profiler追踪配置设置
  • BlockingCollector启用跟踪标记1222,以利于SQL Server 错误日志中的死锁图表的捕获。
你可以通过XML模板来控制SQLdiag的收集器。每个采集器都可以使用<enabled=true> 或<enabled=false>启用或禁用。不要删除XML文件中的collector,因为如果XML文件不匹配,SQLdiag装载XSD会失败。如果你想知道CustomDiagnostics变量的内幕,后面会在“使用SQLdiag配置管理器”中讲到。下面的代码显示了SQLdiag能够接受的所有的参数:
Usage: sqldiag [START | STOP | STOP_ABORT] [/O outputpath] [/I cfgfile] [/M machine1
[machine2 machineN]|@machinelistfile] [/Q] [/C #] [/G] [/R] [/U] [/N #] [/A appname]
[/T {tcp[,port]|np|lpc|via}] [/X] [/L] [/B YYYYMMDD_HH:MM:SS] [/E YYYYMMDD_HH:MM:SS]
现在来看看这些参数是如何使用的,以及一些最佳实践,以防止数据采集成为性能下降的帮凶。
SQLdiag参数列表
  • START | STOP | STOP_ABORT ------ START 和 STOP用于开启和停止数据采集,STOP_ABORT用于中断数据采集。
  • /O outputpath-------为采集的数据指定路径,建议使用存放数据文件之外的本地磁盘。
  • /I cfgfile-------指定数据采集的配置文件,默认为SQLDiag.XML。
  • /M machinename或machinelist file------逗号间隔的列表,指定从哪些机器上采集数据,该参数很少使用,因为远程数据采集应该要避免。
  • /Q------以静音模式运行,阻止任何提示。
  • /C------指定压缩,对于长时间采集数据,特别是大型的PerfMon和Profiler追踪文件很有用。/C 1指示SQLdiag使用NTFS压缩输出的文件。
  • /G------当指定该开关时,连接检查会跳过,仅当缺少权限或出现连接问题时,数据收集才被阻止。如果用户是非Windows管理员组成员,SQLdiag不会默认收集数据。
  • /R------将工具注册为服务。
  • /U------注销服务。
  • /N------定义SQLdiag如何控制输出文件夹的管理,重命名还是覆盖输出文件夹,默认是覆盖的。
  • /A appname------为工具提供一个应用程序名称,可以用不同的应用程序名称来并行执行多个数据收集
  • /T------告诉SQLdiag使用指定的协议,如TCP、Named Pipes、Local Procedure Call或Virtual Interface Adapter,来连接SQL Server实例。
  • /L------指定数据采集以连续模式运行,这必须结合/B或/E参数定义。
  • /B和/E------指定数据采集的开始和结束时间,格式是YYYYMMDD_HH:MM:SS,你甚至可以使用加号(+)指定时间,例如,/B +02:00:00指示数据采集应该从下达命令2小时后开始。
  • /P------设置文件夹路径。默认的是SQLdiag可执行文件所在的文件夹。这个文件夹包含了SQLdiag支持文件,如XML配置文件,T-SQL脚本及其他工具在诊断采集期间使用的文件。
下面举2个例子:
SQLDIAG /O D:\SQLDIAG_Data\ /G /B 20121225_00:01:00 /E +02:00:00    ------------告诉SQLdiag在20121225_00:01:00开始收集,2小时后终止,还指定了输出路径,/G会跳过连接检查,命令提示窗口会显示“SQLDIAG Begin time 20121225_00:01:00 specified. Waiting”,表明SQLdiag成功初始化。
SQLDIAG /O D:\SQLDIAG_Data\ /A DemoDiag /Q /I D:\SQLDIAG_Custom.xml---------------指示SQLdiag使用配置文件收集数据,使用文件压缩,应用程序名显示为DemoDiag,以静音模式运行,SQLdiag初始化成功时会提示如下信息:
DIAG$DemoDiag Collector version
IMPORTANT: Please wait until you see 'Collection started' before attempting to
reproduce your issue
SQLdiag控制台输出和冗长的日志可以在输出路径internal文件夹里找到,分别对应文件##console.log 和 ##SQLDIAG.LOG。当工具执行失败或没达到预期,这连个文件可以提供为何失败的额外洞察。不要使用命令提示窗口的关闭按钮停掉数据采集进程,这会引起Profiler跟踪或PerfMon文件成为孤行。Profiler跟踪可以使用命令sp_trace_setstatus来停止。
作为一个服务来使用SQLdiag
你可以使用/R参数将工具注册为一个服务,使用/U注销服务,使用/A将SQLdiag注册为有独特名称的服务。下面的命令将SQLdiag注册为一个名称为DIAG1的服务:SQLDIAG /R /A DIAG1
图11-2显示了注册为服务的属性,当使用/A参数时,服务名称有前缀DIAG$;如果仅使用/R,那么服务就被命名为SQLDIAG,如图11-3所示。
SouthEast.jpg
注意,服务注册是使用Log On账号为Local System完成的,你需要把服务账号改成有Windows管理员权限和SQL Server实例sysadmin权限的账号。接下来,就要决定指定什么参数,下面的例子中,SQLdiag正被注册为一个服务:
'C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqldiag.exe' /R /I C:\SQLDIAG_Data\SQLDIAG_Custom.XML /O 'C:\SQLDIAG_Data'
成功的服务注册会报告信息“SQLDIAG Service installed. Exiting”。你可以在Windows Application Event Log中看到SQLdiag服务的报告,如图11-4所示:
SouthEast.jpg
在Failover Cluster上配置和执行SQLdiag
当你使用Diag Manager为一个SQL Server FCI(failover cluster instance)配置一个数据采集包时,你需要记住如下要点:
  • 指定SQL virtual server命名为Machine Name;
  • 指定SQL Server实例名称,对于默认的FCI,输入MSSQLSERVER;
  • 一旦配置了包,最好在SQL Server资源的当前拥有者所在的节点上执行。
当你在多个实例故障转移集群上按默认配置执行SQLdiag时,命令窗口会显示大量红色标记的错误。这是因为默认的配置文件SQLDIAG.XML没有改为从特定FCI上采集数据。SQLdiag会自动发现群集,并从每个虚拟机及实例上收集日志和配置信息。在命令窗口显示错误,是因为SQLdiag试图在每台虚拟机上连接每个实例,进而导致多次失败。这种情况下,要么用所需要额目标虚拟机名称来配置SQLDIAG.XML,要么忽略错误。通常可以通过日志文件(##SQLDIAG.LOG)来识别可以安全忽略的错误。一些可忽略的信息实际上有文本信息“you can usually safely ignore this”嵌入其中。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-22284-1-1.html 上篇帖子: 使用Perfmon和PAL工具查看Server性能--其他PerfMon日志性能分析工具 下篇帖子: 使用SQLdiag合并数据采集----使用SQLdiag配置管理器 数据采集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表