CustomDiagnostics
在我们第一次双击D:\Program Files\Microsoft SQL Server\100\Tools\Binn目录下的SQLdiag.exe应用程序所收集的SQL Server默认跟踪、SQLDUMPER_ERRORLOG、MSINFO32输出,实际就是使用了自定义诊断收集器:

上一篇我们提到将过滤器添加到自定义收集器,由于添加过滤器需Stop再Start跟踪,导入跟踪文件到RML或SQL Nexus时,在检测到[TRACE_STOP_EVENT]后就停止.trc文件的分析。如果要借助RML/Nexus分析跟踪文件,就要避免跟踪文件里有[TRACE_STOP_EVENT],于是将创建服务器端跟踪脚本保存到名为SQL_2008_ServerSideTrace_Start.sql文件,将停止移除服务器端跟踪脚本保存到名为SQL_2008_ServerSideTrace_Stop.sql文件,再将它们添加到自定义收集器:

上图中自定义收集器MSInfo分别来自SQLDiagPerfStats_Detailed_Trace2008.XML中的MSInfo、SQLDiag.XML中的MSInfo;PerfStats来自SQLDiagPerfStats_Detailed_Trace2008.XML中的PerfStats;ProfilerTrace是自己添加的与服务器端跟踪相关的脚本。
PerfStatsScript
PerfStats可以用作替换SQLDiag的通用故障排除实用工具,因为收集到的数据更加详细,而且可以为更多的故障场景提供信息。PerfStats脚本目前已集成在SQL Nexus中的一个工具。PerfStats使用的XML配置文件是SQLDiag使用的配置文件的扩展版本;PerfStats添加了一些额外的自定义收集器以收集额外的信息。
PerfStats自定义收集器主要执行SQL_2008_Perf_Stats.sql和SQL_2008_Perf_Stats_Snapshot.sql脚本,其中Snapshot被执行两次(启动时执行一次、关闭时执行一次),不带Snapshot的脚本只执行一次。Snapshot脚本收集丢失索引的详细信息,还包括从sys.dm_exec_query_stats中得到的性能最差的50个查询(通过磁盘、CPU和持续时间判断)。不带Snapshot的脚本将轮询收集活动查询数据(每10秒)和实例范围数据(每分钟),此脚本的输出文件包含了收集数据的主要内容。
1>活动查询的数据
活动查询轮询默认每10秒钟采集一次下列数据,分为3段:
Requests:每个带有活动查询的会话的广泛而详细的信息。这些信息包括CPU时间、内存使用、读写、程序名称、登录名、等待类型、持续时间和阻塞的细节,以及其他信息。
Head Blocker Summary:检测到阻塞的时候,输出文件会记录一些会话信息,例如阻塞链的头、阻塞的会话的数据以及语句文本。
Notable Active Queries:包含过程名、语句文本和执行统计信息。
2>实例范围内的数据
实例范围轮询默认每分钟采集一次,这个性能数据包含了SQL Server PerfMon计数器的一个子集、虚拟文件统计信息以及等待统计信息数据。
异常处理
使用SQL Nexus导入收集的数据时,部分输出文件Import Failed:

查看Nexus Log发现类似以下错误:
Rowset Importer failed for file: F:\TroubleShooting\SQLdiag\Output\HostName_InstanceName_SQL_2008_Perf_Stats_Startup.OUTexception: System.Data.SqlClient.SqlException (0x80131904): 从 bcp 客户端收到一个对 colid 14 无效的列长度。
实际上SQL_2008_Perf_Stats_Snapshot_Shutdowm.OUT输出文件的数据采集不全,经常刚运行就结束了。如果有Snapshot_Shutdowm.OUT文件,就不会导入Snapshot_Startup.OUT文件,通常的做法是在导入SQL Nexus前,将Snapshot_Shutdowm.OUT文件删除,或者修改XML配置文件,让Snapshot脚本仅在启动时运行一次。
逐一排查SQL_2008_Perf_Stats_Startup.OUT文件内容,定位导入失败的记录。分析收集数据脚本,对比相应的数据表:

库下tbl_NOTABLEACTIVEQUERIES表的字段类型与收集数据时使用的字段类型不一致,导入数据时使用Profiler跟踪到创建表的字段类型即为varchar(?),暂时没找到建表脚本保存在哪,因此考虑修改SQL_2008_Perf_Stats.sql中的对应部分。
17:29 2016/1/15 最近发现另一个错误:Rowset Importer failed for file: F:\TroubleShooting\SQLdiag\Output\HostName_InstanceName_SQL_2008_Perf_Stats_Snapshot_Startup.OUTexception: System.Data.SqlClient.SqlException (0x80131904): 从 bcp 客户端收到一个对 colid 16 无效的列长度。
此次是Snapshot输出文件的错误,排查发现表tbl_TopN_QueryPlanStats中没数据,初步判断是表中字段类型与收集数据不匹配。创建与目标表一致的临时表,然后用对应的采集语句执行,"将截断字符串或二进制数据",尝试将SQL_2008_Perf_Stats_Snapshot.sql中Top N Query Plan Statistics部分获取stmt_text字段进行截取left(stmt_text,略小于字段类型长度),问题解决。
PssDiag
PssDiag配置管理器提供各种各样的配置选项,你可以轻松地自定义数据收集。首先你需要选择平台X86、X64或IA64,然后选择SQL Server版本。我们再来考虑一下工具中的一些关键领域:

Connection Info
提供打算收集诊断数据的计算机名称和SQL Server实例名称的地方。这里的最佳配置实践是总是提供计算机名和实例名。提供计算机名和实例名后,你可以选择允许数据收集的身份验证,是Windows还是SQL Server身份验证。如果选择SQL Server身份验证,你只能提供用户名,在运行时系统将提示你输入密码。
Machine-wide Diagnostics
Windows事件日志收集的配置
PerfMon数据收集的配置:默认情况下,一组计数器是基于存在于所选模板的信息来预先填充的。你可以启用你认为对于分析你的问题场景有必要的额外计数器。你可以配置最大文件大小和采样间隔。
Instance-specific Diagnostics
用于配置database engine或analysis server跟踪和SQLdiag输出的收集。在这里,可以为数据库引擎和SQL Server Analysis Servers实例配置一个跟踪。基于选择的SQL Server版本,会看到Profiler跟踪事件填充在列表中,你可以为数据收集配置Profiler跟踪的滚动大小。SQLdiag诊断脚本的收集可在这个部分启用或者禁用。
Custom Diagnostics
它提供了预先内置的定制收集器的一个列表,这些收集器已经可用于数据收集(自定义诊断配置所使用的T-SQL、VBScript和DOC命令可在X:\Program Files\Microsoft\Pssdiag\CustomDiagnostics文件夹中找到)。此外,你还可以扩展数据收集。
关于PssDiag的详细操作可参考《SQL Server 2012 深入解析与性能优化(第3版)》11.4 使用SQL diag配置管理器。

SQLdiag-配置文件-扩展的更多相关文章

  1. Mysql配置文件 扩展详细配置

    目录 配置文件中有些特定参数 扩展配置 max_connections connect_timeout interactive_timeout|wait_timeout net_retry_count ...

  2. Asp.net 面向接口可扩展框架之类型转化基础服务

    新框架正在逐步完善,可喜可贺的是基础服务部分初具模样了,给大家分享一下 由于基础服务涉及面太广,也没开发完,这篇只介绍其中的类型转化部分,命名为类型转化基础服务,其实就是基础服务模块的类型转化子模块 ...

  3. 005-Spring Boot配置分析-配置文件application、EnvironmentPostProcessor、Profiles

    一.配置文件application 默认配置文件application.propertie或者application.yml,可同时存在 application.propertie增加配置:local ...

  4. Spring加载加密的配置文件

    一.继承并实现自己的属性文件配置器类 /** * 带加密的Spring属性配置文件扩展类 * 加密方式:AES * @author simon * */ public class EncryptPro ...

  5. 管道符和作业控制、shell变量、环境变量配置文件 使用介绍

    第6周第1次课(4月23日) 课程内容: 8.6 管道符和作业控制 8.7/8.8 shell变量8.9 环境变量配置文件扩展bashrc和bash_profile的区别 http://ask.ape ...

  6. Spring Boot 2.4 配置文件将加载机制大变化

    Spring Boot 2.4.0.M2 刚刚发布,它对 application.properties 和 application.yml 文件的加载方式进行重构.如果应用程序仅使用单个 applic ...

  7. 在spring boot使用总结(九) 使用yaml语言来写配置文件

    yaml是专门用来写配置文件的语言.使用yaml来写配置文件扩展性比较强而且十分方便.spring boot支持使用yaml语言来写配置文件,使用snakeyaml库来读取配置文件.spring bo ...

  8. Docker Compose配置文件详解(V3)

    Docker Compose配置文件是Docker Compose的核心,用于定义服务.网络和数据卷.格式为YAML,默认路径为./docker-compose.yml,可以使用.yml或.yaml扩 ...

  9. SQLdiag-初识

    SQLdiag是一个命令行实用工具,默认情况下,在C:\Program Files\Microsoft SQL Server\100\Tools\Binn目录下可用.首先我们打开SQLdiag.exe ...

  10. SQL Server自动化运维系列——关于数据收集(多服务器数据收集和性能监控)

    需求描述 在生产环境中,很多情况下需要采集数据,用以定位问题或者形成基线. 关于SQL Server中的数据采集有着很多种的解决思路,可以采用Trace.Profile.SQLdiag.扩展事件等诸多 ...

随机推荐

  1. Java常用类之Properties类

    1.特性 Properties类表示了一个持久的属性集,可保存在流中或从流中加载,实现内存和文件的交互.Properties继承了Hashtable<Object,Object>类,可以使 ...

  2. POJ 3321 Apple Tree(DFS序+线段树单点修改区间查询)

    Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 25904   Accepted: 7682 Descr ...

  3. 揪出Android流氓软件

    揪出Android流氓软件 http://www.icpcw.com/Smartphone/Android/Android/1471/147142_all.htm http://www.william ...

  4. Twitter Storm中Bolt消息传递路径之源码解读

    本文初次发表于storm-cn的google groups中,现以blog的方式再次发表,表明本人徽沪一郎确实读过这些代码,:). Bolt作为task被executor执行,而executor是一个 ...

  5. material design——设计文档

    http://www.uisdc.com/comprehensive-material-design-note

  6. mysql入门问题

    1.给列设置默认时间 在创建表的图形化界面,不能直接用函数sysdate()或者now()来设置默认当前时间,要用sql脚本创建的话就可以 IF NOT EXISTS `tb_1` THENBEGIN ...

  7. js中json字符串转成js对象

    json字符串转成js对象我所知的方法有2种: //json字符串转换成json对象 var str_json = "{name:'liuchuan'}"; //json字符串 / ...

  8. 取消svn关联

    把下面这段文字保存成一个reg文件 Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\sh ...

  9. 告诉你Hadoop是什么

    Hadoop是什么?Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算. Hadoop框架中 ...

  10. C语言PRO2

    2-5 #include<stdio.h>#include<math.h>int main(){ int money , year; double rate , sum; pr ...