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.扩展事件等诸多 ...
随机推荐
- 浅谈RAID写惩罚(Write Penalty)与IOPS计算
介绍 通常在讨论不同RAID保护类型的性能的时候,结论都会是RAID-1提供比较好的读写性能,RAID-5读性能不错,但是写入性能就不如RAID-1,RAID-6保护级别更高,但写性能相对更加差,RA ...
- 彻底搞清楚字符编码: ASCII, ISO_8859, GB2312,UCS, Unicode, Utf-8
彻底搞清楚字符编码: ASCII, ISO_8859, GB2312,UCS, Unicode, U 1.ASCII: 0-127(128-255未使用),美国标准 2.IS0-8859-1(lati ...
- Nginx 笔记与总结(5)访问日志管理:计划任务 + 日志切割
要在第二天的凌晨把前一天的访问日志切割备份,并以时间作为文件名,例如:access.20150728.log,这就需要在 Linux 中格式化时间,例如: [root@localhost ~]# da ...
- Redis 笔记与总结8 PHP + Redis 信息管理系统(分页+好友关注)
分页 要对列表页进行分页,需要知道: ①用户总数 $count ② 页大小 $pageSize:用户自定义 ③ 当前页:$page:GET 方式获取 ④ 总页数:$pageCount = ceil($ ...
- Android 调用资源字符串的几种方法
在 Layout XML 调用字符串资源: <TextView android:layout_width="fill_parent" android:layout_heigh ...
- 【转】C#中HttpWebRequest的用法详解
本文实例讲述了C#中HttpWebRequest的用法.分享给大家供大家参考.具体如下: HttpWebRequest类主要利用HTTP 协议和服务器交互,通常是通过 GET 和 POST 两种方式来 ...
- Mschat控件示例升级错误处理方法
将具有 3.5 版图表控件的 ASP.NET 3.5 网站升级到 ASP.NET 4 需要更改 web.config 和注册指令 将具有 3.5 版图表控件的 ASP.NET 3.5 网站升级到 AS ...
- ADB not responding. If you'd like to retry, then please manually kill "adb.exe" and click 'Restart'
ADB not responding. If you'd like to retry, then please manually kill "adb.exe" and click ...
- threading多线程
什么是线程? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务.一 ...
- [LeetCode]题解(python):034-Search for a Range
题目来源 https://leetcode.com/problems/search-for-a-range/ Given a sorted array of integers, find the st ...