SQLdiag-配置文件-扩展
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-配置文件-扩展的更多相关文章
- Mysql配置文件 扩展详细配置
目录 配置文件中有些特定参数 扩展配置 max_connections connect_timeout interactive_timeout|wait_timeout net_retry_count ...
- Asp.net 面向接口可扩展框架之类型转化基础服务
新框架正在逐步完善,可喜可贺的是基础服务部分初具模样了,给大家分享一下 由于基础服务涉及面太广,也没开发完,这篇只介绍其中的类型转化部分,命名为类型转化基础服务,其实就是基础服务模块的类型转化子模块 ...
- 005-Spring Boot配置分析-配置文件application、EnvironmentPostProcessor、Profiles
一.配置文件application 默认配置文件application.propertie或者application.yml,可同时存在 application.propertie增加配置:local ...
- Spring加载加密的配置文件
一.继承并实现自己的属性文件配置器类 /** * 带加密的Spring属性配置文件扩展类 * 加密方式:AES * @author simon * */ public class EncryptPro ...
- 管道符和作业控制、shell变量、环境变量配置文件 使用介绍
第6周第1次课(4月23日) 课程内容: 8.6 管道符和作业控制 8.7/8.8 shell变量8.9 环境变量配置文件扩展bashrc和bash_profile的区别 http://ask.ape ...
- Spring Boot 2.4 配置文件将加载机制大变化
Spring Boot 2.4.0.M2 刚刚发布,它对 application.properties 和 application.yml 文件的加载方式进行重构.如果应用程序仅使用单个 applic ...
- 在spring boot使用总结(九) 使用yaml语言来写配置文件
yaml是专门用来写配置文件的语言.使用yaml来写配置文件扩展性比较强而且十分方便.spring boot支持使用yaml语言来写配置文件,使用snakeyaml库来读取配置文件.spring bo ...
- Docker Compose配置文件详解(V3)
Docker Compose配置文件是Docker Compose的核心,用于定义服务.网络和数据卷.格式为YAML,默认路径为./docker-compose.yml,可以使用.yml或.yaml扩 ...
- SQLdiag-初识
SQLdiag是一个命令行实用工具,默认情况下,在C:\Program Files\Microsoft SQL Server\100\Tools\Binn目录下可用.首先我们打开SQLdiag.exe ...
- SQL Server自动化运维系列——关于数据收集(多服务器数据收集和性能监控)
需求描述 在生产环境中,很多情况下需要采集数据,用以定位问题或者形成基线. 关于SQL Server中的数据采集有着很多种的解决思路,可以采用Trace.Profile.SQLdiag.扩展事件等诸多 ...
随机推荐
- [转].net 缩略图方法
本文转自:http://www.cnblogs.com/promic/archive/2010/04/21/1717190.html private static string strConnect ...
- iOS coreData使用遇到的问题
使用coreData,一定要有上下文环境.创建上下文时,和以前有些不同,之前 NSManagedObjeContext *context = [NSManagedObjectContext alloc ...
- spring mvc和spring配置扫描包问题
spring mvc和spring俩配置文件,其中都要配置扫描包. <context:component-scan base-package="com.controller" ...
- lua学习笔记
工作需要,上周对lua赶进度似地学习了一遍,主要参考<lua中文教程>一书,中间参考一些<lua游戏开发实践>,首先说说这两本书,后者不适合初学,里面是对一个游戏脚本系统进行粗 ...
- Introducing the Accelerated Mobile Pages Project, for a faster, open mobile web
https://googleblog.blogspot.com/2015/10/introducing-accelerated-mobile-pages.html October 7, 2015 Sm ...
- 02/07/2106 @ 6:28am (UTC)
<?php echo pow(2,32); 4294967296 http://www.unixtimestamp.com/index.php 4294967296 Is equivalent ...
- JS中基本window.document对象操作以及常用事件!
一.找到元素 1.document.getELementById("id"):根据id找,最多找一个. var a=document.getELementById("id ...
- JavaScript判断字符串的字符长度(中文占两个字符)
判断方法 //判断字符串中的字符 中文算两个字符 function chkstrlen(str) { ; ; i < str.length; i++) { ) //如果是汉字,则字符串长度加2 ...
- ecshop insert用法
1 {insert name='ads' id=$ads_id num=$ads_num} 控制语句是在 /includes/lib_insert.php 文件.这个文件是ecshop动态内容函数库. ...
- Charles辅助调试接口
http://blog.sina.com.cn/s/blog_6ae8b50d0102w7tw.html