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. [转]用Linq取CheckBoxList選取項目的值

    本文转自:http://www.dotblogs.com.tw/hatelove/archive/2011/11/17/linq-checkboxlist-items-selected-values. ...

  2. 在Linux中安装SEP Client

    1. 下载Symantec_Endpoint_Protection_12.1.5_Linux_Client_EN, 解压其中的sep-deb.zip   2. 若直接sudo ./install.sh ...

  3. Java判断一个时间是否在另一个时间段内

    需求:当时间在凌晨0点至0点5分之间程序不执行. 也就是实现判断当前时间点是否在00:00:00至00:05:00之间 方法: Java代码 : /** * 判断时间是否在时间段内 * * @para ...

  4. lua5.2版本在VS2010下的环境搭建

    第一次使用脚本语言,第一次使用解释性语言 公司的现在维护的游戏开发的比较早,采用的lua还是比较早的版本,像NPC脚本系统就是使用lua+luabind结合的module模式,服务器端没涉及到,所以不 ...

  5. Tomcat安装、启动和配置

    Tomcat服务器介绍 Tomcat是一个免费开发源代码的web应用服务器,具有与IIS.Apache等web服务器一样处理html页面的功能,另外它还是一个Servlet和JSP容器,独立的serv ...

  6. Python - 素数筛

    def shai(n): prim = list() check = list([1] * (n + 1)) for i in range(2, n + 1): if(check[i] == 1): ...

  7. ExtJS 刷新或者重载Tree后,默认选中刷新前最后一次选中的节点代码片段

    //tree对象 var tree = Main.getPageControler().treePanel; //获取选中的节点 var node = tree.getSelectionModel() ...

  8. EBS 资源路径

    /data03/DEV4/comn/java/cmcc/upload cd  $OA_HTML /data03/DEV4/comn/html 日志 $IAS_ORACLE_HOME/Apache/Js ...

  9. jsp页面直接编写csss

    <style> .logoZL{ width:550px; float:right; text-align:right; padding-right:15px; margin-right: ...

  10. 深入了解Windows句柄到底是什么

    深入了解Windows句柄到底是什么 http://blog.csdn.net/wenzhou1219/article/details/17659485 总是有新入门的Windows程序员问我Wind ...