采集工具(SQLdiag是一个收集SQLServer实例诊断数据的多用途实用工具)
优采云 发布时间: 2022-02-24 16:11采集工具(SQLdiag是一个收集SQLServer实例诊断数据的多用途实用工具)
SQLdiag 是一个多用途实用程序,可采集有关 SQL Server 实例的诊断数据,并可作为控制台应用程序或服务运行。SQLdiag 可以帮助您采集 SQL Server Profiler 跟踪、Windows 性能监视器日志,并通过配置管理器的可扩展接口输出各种 VBScript、T-SQL 和 DOS 脚本。SQLdiag 采集的数据可以通过 SQL Nexus 导入 SQL Server 数据库,SQL Nexus 是一种 GUI 工具,以报告格式提供采集数据的聚合视图。
SQLdiag 是一个命令行实用程序,默认为 C:\Program Files\Microsoft SQL Server\110\Tools\Binn。您可以在 3 种模式下运行 SQLdiag:
在快照模式下使用 SQLdiag
当 SQLdiag 在快照模式下运行时,它会采集所有已配置诊断数据的快照,然后自动关闭。如果在命令提示符窗口中执行 SQLDIAG /X,SQLdiag 将在 Binn 文件夹中创建一个 SQLDIAG 文件夹,其中收录所有采集的数据。您还将找到一个“内部”文件夹,其中收录该工具创建的日志文件,以及用于在其他文件中采集数据的 XML 配置文件。当您想要快速获取 SQL Server 实例状态的快照时,这种采集数据的方法很有用。您将获得过多的 SQL Server 和 Windows 配置信息、最近遇到的错误、数据库引擎经历的等待等等。数据采集完成后,该工具会自动关闭并显示消息“SQLDIAG 采集完成。
将 SQLdiag 用作命令行应用程序
在查看 SQLdiag 数据采集 之前,您应该先了解 SQLdiag 配置文件,以便正确配置不同的数据采集器。图 11-1 显示了 SQLDIAG.XML 配置文件的关键元素的屏幕截图:
SQLdiag 配置文件关键元素
您可以通过 XML 模板控制 SQLdiag 的采集器。每个 采集器 都可以使用或启用或禁用。不要删除 XML 文件中的采集器,因为如果 XML 文件不匹配,SQLdiag 将无法加载 XSD。如果您想了解 CustomDiagnostics 变量的内部情况,稍后将在“使用 SQLdiag 配置管理器”中进行介绍。以下代码显示了 SQLdiag 可以接受的所有参数:
用法:sqldiag [开始 | 停止 | STOP_ABORT] [/O 输出路径] [/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]
现在让我们看看这些参数是如何使用的,以及一些防止 data采集 成为性能下降的帮凶的最佳实践。
SQLdiag 参数列表
这里有 2 个例子:
SQLDIAG /OD:\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 /OD:\SQLDIAG_Data\ /A DemoDiag /Q /ID:\SQLDIAG_Custom.xml---------------指示SQLdiag使用配置文件采集数据,使用文件压缩,应用程序名称display 对于DemoDiag,在静默模式下运行,SQLdiag初始化成功后会显示如下信息:
DIAG$DemoDiag 采集器版本
重要提示:请等到您看到“采集已开始”,然后再尝试
重现您的问题
SQLdiag 控制台输出和详细日志可以在输出路径的内部文件夹中找到,分别对应于文件##console.log 和##SQLDIAG.LOG。当工具失败或未能按预期执行时,这两个文件可以提供有关其失败原因的更多信息。不要使用命令提示符窗口的关闭按钮来停止 data采集 进程,因为这会导致 Profiler 跟踪或 PerfMon 文件成为孤立文件。可以使用命令 sp_trace_setstatus 停止探查器跟踪。
将 SQLdiag 用作服务
您可以使用 /R 参数将工具注册为服务,使用 /U 取消注册服务,使用 /A 将 SQLdiag 注册为具有唯一名称的服务。以下命令将 SQLdiag 注册为名为 DIAG1 的服务: SQLDIAG /R /A DIAG1
图 11-2 显示了注册为服务的属性。使用 /A 参数时,服务名称以 DIAG$ 为前缀;如果只使用/R,则服务名为SQLDIAG,如图11-3所示。
请注意,服务注册是使用本地系统的登录帐户完成的,您需要将服务帐户更改为具有 Windows 管理员权限和 SQL Server 实例系统管理员权限的帐户。接下来,有必要决定要指定哪些参数。在以下示例中,SQLdiag 被注册为服务:
'C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqldiag.exe' /R /IC:\SQLDIAG_Data\SQLDIAG_Custom.XML /O 'C:\SQLDIAG_Data'
成功的服务注册将报告消息“SQLDIAG 服务已安装。退出”。在Windows Application Event Log中可以看到SQLdiag服务报告,如图11-4所示:
在故障转移群集上配置和执行 SQLdiag
使用 Diag Manager 为 SQL Server FCI(故障转移群集实例)配置数据采集 包时,需要牢记以下几点:
在多实例故障转移集群上使用默认配置执行 SQLdiag 时,命令窗口会显示大量错误标记为红色。这是因为默认配置文件 SQLDIAG.XML 尚未更改为来自特定 FCI 的 采集data。SQLdiag 自动发现集群并从每个虚拟机和实例中采集日志和配置信息。该错误显示在命令窗口中,因为 SQLdiag 尝试连接到每个虚拟机上的每个实例,这反过来又失败了多次。在这种情况下,请使用所需的目标虚拟机名称配置 SQLDIAG.XML,或者忽略该错误。可以安全忽略的错误通常可以通过日志文件 (##SQLDIAG.LOG) 来识别。一些可忽略的消息实际上有“短信”