WEB开发网
开发学院数据库MSSQL Server 内部 SQL Server 诊断工具,第 1 部分:PSSDiag 阅读

内部 SQL Server 诊断工具,第 1 部分:PSSDiag

 2007-11-11 04:46:46 来源:WEB开发网   
核心提示: 多计算机收集和使用 INI 配置文件一样,您可以使用 xml(标准化越来越近了) 配置格式配置为同时从多台计算机中收集诊断信息,内部 SQL Server 诊断工具,第 1 部分:PSSDiag(5),这就相当于在 xml(标准化越来越近了) 文档中设置多个 <Machine> 标记并提供必要的子元素和属

多计算机收集

和使用 INI 配置文件一样,您可以使用 xml(标准化越来越近了) 配置格式配置为同时从多台计算机中收集诊断信息。这就相当于在 xml(标准化越来越近了) 文档中设置多个 <Machine> 标记并提供必要的子元素和属性。最简便的方法是复制并粘贴一台计算机对应的 <Machine> 节点节,以便创建多个计算机节。

对于此主题,另外需要在此说明的一点是,您也可以使用单个收集程序实例来收集多台计算机中的诊断信息,而不用设置多个配置文件节。收集程序支持使用星号 (*) 作为计算机名称,在收集过程中会根据收集程序的运行模式对星号进行不同的评估。

从以上论述中您可以记起,模式开关控制着 PSSDiag 是否启用特定的 sql server(WINDOWS平台上强大的数据库平台) 专用连接以及权限检查。它还会影响指定 * 作为目标计算机名称时星号的评估方式。在 sql server(WINDOWS平台上强大的数据库平台) 模式中,* 会使收集程序清点当前域中所有可见的 sql server(WINDOWS平台上强大的数据库平台)。这些服务器必须作为 sql server(WINDOWS平台上强大的数据库平台) 来运行和广播它们自己。在 Generic(普通)模式下,使用 * 作为计算机名称将会使收集程序清点当前域中所有可见的服务器,而不管它们是否正在运行 sql server(WINDOWS平台上强大的数据库平台),并试图收集这些服务器中的诊断信息。因此,您可以方便地使用此功能从每个 sql server(WINDOWS平台上强大的数据库平台) 中,甚至从收集程序主域上的每台计算机中收集相同的诊断信息。

从多台计算机中收集相同诊断信息的另一种方法是使用计算机列表文件(使用 /M 启动参数表示列表文件,并在文件名前面添加 @,例如 /M @myservers.txt)。计算机列表文件仅仅是一个文本文件,其中各行列出了您要从中收集诊断信息的计算机。指定计算机列表文件将会使配置文件中指定的计算机名称被列表文件中指定的计算机名称替代,并将同时从所有这些计算机中收集诊断信息。如果您想用单个计算机名称来替代配置文件中指定的计算机名称,只需通过 /M 启动参数指定该名称(例如 /Mmymachine)。

群集

收集服务程序功能还特别支持从 Windows 群集中收集诊断信息。当在群集节点上运行,并且指定 .(默认值)作为计算机名称时,收集服务程序将会检测到它运行在群集上,并且如果是在 sql server(WINDOWS平台上强大的数据库平台) 模式【与 Generic(普通)模式相对】下,将会检索安装在群集上的虚拟 sql server(WINDOWS平台上强大的数据库平台) 并同时从它们中收集信息。这意味着如果只存在一个虚拟 sql server(WINDOWS平台上强大的数据库平台),您不需要执行任何操作就可以使收集程序识别它并从中收集合适的诊断信息。如果您想只从同一计算机上多个虚拟 sql server(WINDOWS平台上强大的数据库平台) 中的一个中收集信息,请指定该虚拟 sql server(WINDOWS平台上强大的数据库平台) 作为目标计算机名称。

收集进程

一旦完成了对配置信息的处理,收集服务程序就会开始收集您所要求的诊断信息。对于配置信息中的每个计算机节,收集程序都会启动一个单独的工作线程,并同时从所有计算机中收集信息。一台特定计算机中的所有诊断信息仅需使用一个工作线程来收集。这意味着如果您只从单个计算机中收集诊断信息(默认情况),收集程序就会只创建一个工作线程来收集所要求的数据。这种设计使 PSSDiag 几乎可以按线性方式衡量,并以有效方式同时从多台计算机中收集数据。

请注意,这种设计并不表示一台特定计算机中的所有诊断信息必须以串行、同步的方式来收集。正相反,大部分诊断信息是以并行方式收集的。既然我们为每台计算机只使用了一个工作线程,那么这是如何实现的呢?这是因为除了 Perfmon 日志以外的所有诊断信息都是通过其他程序来收集的。这通常是 sql server(WINDOWS平台上强大的数据库平台) OSQL 实用程序 (sql server(WINDOWS平台上强大的数据库平台) 2005 中的 SQLCMD),但有时也会是 Windows 命令处理器或某些其他可执行程序。通过让这些工具来承担诊断信息收集的大部分工作,收集程序就更多地担任了管理角色,只需为每台计算机使用一个工作线程即可。收集程序将监控其产生的进程并根据情况等待它们完成,通常会同时等待几个进程。

在收集进程中,您所要求的每个诊断信息都会按照指定要求进行收集,并且会将其输出结果传送到输出文件夹中。唯一的例外可能就是事件探查器跟踪。如果您在一台计算机上运行收集服务程序而要从另一台计算机中收集事件探查器跟踪,那么事件探查器跟踪将会被写入远程计算机。这是由于收集程序使用 sql server(WINDOWS平台上强大的数据库平台) sp_trace_* 扩展存储过程来收集事件探查器跟踪,并且这些过程总是在主机 sql server(WINDOWS平台上强大的数据库平台) 环境内运行。这意味着您指定的输出文件夹在正运行收集程序的计算机和远程 sql server(WINDOWS平台上强大的数据库平台) 计算机上都必须存在。因此,如果您将输出文件夹设置为“C:\PSSDiag\Output”,它必须在两台计算机上都存在。在关闭进程中,收集程序将会尝试使用远程系统上的管理共享将跟踪文件复制到本地计算机上的输出文件夹中,以便使所有诊断输出都位于同一个位置,并且如果您启用了 ZIP 压缩还可以将输出结果压缩到单个文件中。

请注意,虽然收集程序支持从远程计算机中收集数据,但这并不是它的默认工作方式,除非确实需要,否则不应使用此功能。从远程计算机中收集数据还有一个更简便的方法,那就是在每台远程计算机上都安装收集服务程序,然后使用 DiagConfig 来管理您与每台计算机的交互。DiagConfig 不直接支持从没有安装收集服务程序的计算机中收集诊断信息。

关闭进程

一旦收集服务程序启动了数据收集,它就会持续进行下去,直到您关闭该程序或者它碰到了关闭条件(例如,它到达了先前指定的某个结束日期/时间或者由于您只要求诊断信息快照而自动停止等)。当作为服务程序运行时,停止收集程序的最佳方法是单击 DiagConfig 中的 Stop(停止)。您也可以运行收集程序的启动文件夹中的 DiagControl STOP 或使用服务控制管理器来停止它。由于某些原因(在此不深入探究),您应当如上所述尽量使用 DiagConfig 或 DiagControl 而不是 Windows 服务控制管理器。

收集程序关闭后,将会停止它启动的所有诊断信息收集。这意味着它会停止先前启动的所有事件探查器跟踪,取消当前运行的所有 T-SQL 脚本,并终止产生的所有子进程(包括子进程产生的所有子进程)。一旦所有诊断信息都被停止,如果您事先要求,收集程序会将其输出结果压缩到一个 Zip 文件中,然后退出。

如果您指定了 Run Continuously(不间断运行)启动参数,假设收集程序由于到达了指定的结束时间而停止,它会在退出前重新启动。其运行方式就像手动重新启动一样。如上所述,这将使您可以方便地每日收集给定的诊断信息集合,而不用手动启动和停止收集程序。

安装或卸载收集服务程序

通常情况下,您不需要手动安装收集服务程序。如果您使用 DiagConfig 来管理本地计算机上的收集服务程序,它将会根据需要注册收集服务程序。但是在有些情况下,您可能会希望手动进行注册,因此我将会提供一些有关如何手动注册的说明。例如,如果您打算在多台计算机上安装收集服务程序,并且使用 DiagConfig 通过单台计算机来管理所有这些计算机。此时您就可能会希望手动进行注册。如果您需要在没有安装 .NET Framework 的服务器上安装收集程序,您也可能会需要手动注册收集服务程序。由于 DiagConfig 是一个托管代码应用程序,因此您必须在运行它之前安装 .NET Framework,或者不使用 DiagConfig 注册收集服务程序和与其交互。

首先,可执行的收集程序 PSSDiag.Exe 可以通过 /R 命令行参数将自身注册为一个服务程序(/U 用于撤销注册)。您注册时在命令行上指定的任何参数都会被保留以便将来运行服务程序。撤销注册服务程序不但会删除服务程序,还会删除特定于 PSSDiag 的注册表项,而无需使用卸载应用程序。PSSDiag 卸载进程实际上就是撤销注册服务程序并删除包含二进制和支持文件的目录。

其次,您可以通过 /A 命令行参数来控制收集服务程序的名称。使用此选项可以在单台计算机上安装多个 PSSDiag 实例。如果不指定此选项,默认的服务程序名称将是 PSSDiag,但是您可以根据要求使用其他任何名称。所有输出文件和消息等都将会与您所用的名称相符合。这使您可以拥有多个收集服务程序实例,例如,一个连续运行用于收集影响甚微的诊断信息集合的实例,一个根据需要运行用于收集更具有破坏性的诊断信息集合的实例。如果您选择在同一计算机上安装多个收集服务程序实例,最佳做法是将 PSSDiag 二进制和支持文件复制到每个实例单独的文件夹中,并且根据您打算使用的实例名称来命名每个文件夹。这样就不必担心忘记为每个实例指定不同的输出文件夹(因为默认输出文件夹为服务程序启动目录下的 OUTPUT 子文件夹),并且帮助防止发生其他类型的潜在的文件访问冲突。

上一页  1 2 3 4 5 6 7  下一页

Tags:内部 SQL Server

编辑录入:coldstar [复制链接] [打 印]
赞助商链接