zoukankan      html  css  js  c++  java
  • SQLdiag-初识

    SQLdiag是一个命令行实用工具,默认情况下,在C:Program FilesMicrosoft SQL Server100ToolsBinn目录下可用。
    首先我们打开SQLdiag.exe所在目录,可以在命令行中通过以下命令获取工具所在位置:

    WHERE SQLdiag


    我的机器上安装有两个数据库实例,本篇文章使用SQL08R2实例
    我们打开D:Program FilesMicrosoft SQL Server100ToolsBinn目录,双击SQLdiag.exe应用程序就能运行SQLDIAG工具,它会收集所有配置的诊断数据。待系统信息刷新完成后,我们可以按Ctrl+C组合键停止收集;如果我们在系统信息刷新完成前,按Ctrl+C组合键,SQLDIAG窗口提示需要等待进程完成,然后会自动关闭。

    默认收集的信息保存在SQLDIAG文件夹下,主要包括以下信息:

    1>internal文件夹,包含了由该工具创建的日志文件,以及一些其他文件
    2>SQL Server默认跟踪、SQLDUMPER_ERRORLOG
    3>一个文本文件的MSINFO32输出
    4>机器名_实例名_sp_sqldiag_Shutdown.OUT文本文件,其中包含了下列数据:
      4.1>所有错误日志
      4.2>各种系统存储过程的输出,如sp_configure、sp_who、sp_lock、sp_helpdb从而获得SQL Server实例和数据库配置详细信息
      4.3>各种动态管理视图和系统目录的输出,如sys.sysprocesses、sys.dm_exec_sessions和sys.dm_os_wait_stats,以获得以下额外的重要信息:
        4.3.1>了解实例的内存使用情况
        4.3.2>所有SQL Server PerfMon计数器的当前值的快照
        4.3.3>SQL Server等待统计的快照
        4.3.4>SQL Server实例中的会话和活跃请求的状态,以及相关联的输入缓冲区
        4.3.5>SQL Server调度器的状态
    这些收集信息是怎么来的呢?我们先了解SQLdiag配置文件的结构,当我们运行过SQLdiag.exe后,会在binn目录下创建SQLDiag.xml、SD_General.xml、SD_Detailed.xml三个配置文件,默认是使用SQLDiag.xml。让我们来查看SQLDiag.xml配置文件中的关键元素:

    ->Machine name的值是点号(.)表示数据收集将要从本地计算机发起
    ->Instance nam的值是星号(*)指定实用工具应收集安装在计算机上的所有实例中的数据
    ->EventlogCollector元素指定是否收集Windows事件日志
    ->PerfmonCollector元素指定是否收集PerfMon数据,pollinginterval和maxfilesize参数分别定义了两次连续取样的时间间隔和PerfMon的.blg文件的最大大小
    ->SqldiagCollector元素指定是否收集SQLdiag输出文件
    ->BlockingCollector元素启用跟踪标志1222,以便在SQL Server错误日志中捕获死锁的图形
    ->ProfilerCollector元素指定SQL Server Profiler事件是否被捕获,以及所有的Profiler跟踪配置设置
    ->CustomDiagnostics自定义诊断,可以扩展数据收集
    图中我们可以看到EventlogCollector、PerfmonCollector、BlockingCollector、ProfilerCollector元素收集器是禁用的;SqldiagCollector、CustomDiagnostics中启用对MSINFO32、Default traces以及SQLDumper log的收集。因此我们在SQLDIAG文件夹下得到这些信息。
    命令行使用SQLdiag
    SQLdiag详细语法请参考https://msdn.microsoft.com/zh-cn/library/ms162833.aspx

    sqldiag 
         { [/?] }
         |
         { [/I configuration_file]
           [/O output_folder_path]
           [/P support_folder_path]
           [/N output_folder_management_option]
           [/M machine1 [ machine2 machineN]| @machinelistfile]
           [/C file_compression_type]
           [/B [+]start_time]
           [/E [+]stop_time]
           [/A SQLdiag_application_name]
           [/T { tcp [ ,port ] | np | lpc } ]
           [/Q] [/G] [/R] [/U] [/L] [/X] }
         |
         { [START | STOP | STOP_ABORT] }
         |
         { [START | STOP | STOP_ABORT] /A SQLdiag_application_name }
    View Code

    --切换到SQLdiag位置

    cd D:Program FilesMicrosoft SQL Server100ToolsBinn
    SQLdiag

    --上面SQLdiag命令等效于

    SQLdiag /I SQLDiag.XML /O SQLDIAG

    --使用 /B 和 /E 参数指定开始和停止时间(24小时制YYYYMMDD_HH:MM:SS)

    SQLdiag /B +01:00:00 /E +03:00:00

    上面使用的是相对时间,SQLdiag 在等待 1 小时后开始收集信息,然后经过 3 小时的信息收集后停止并退出。SQLdiag会在相对于当前日期和时间的某个时间启动,并会在相对于指定的start_time的某个时间结束。如果指定的开始或结束日期和时间均为过去的时间,则SQLdiag将会强行更改开始日期,以使开始日期和时间为将来的时间。

    SQLdiag /B +01:00:00 /E 08:30:00

    如果当前时间为08:30,则在诊断收集操作实际开始之前,结束时间已经过去。因为当开始和结束日期为过去的时间时,SQLDiag 会自动将开始和结束日期调整为下一天,所以,该示例中的诊断收集将在当天的 09:00(已使用 + 指定的一个相对开始时间)开始,一直到第二天早上的 08:30 才结束。
    --使用 /I 和 /O 参数指定配置文件和输出文件夹

    SQLdiag /I F:TroubleShootingSQLdiaginputSD_General.XML /O F:TroubleShootingSQLdiagOutput

    SQLdiag注册为服务
    如果希望使用 SQLdiag 长时间收集诊断数据,而在该时间段内可能需要注销运行 SQLdiag 的计算机,则可将其作为服务运行。将SQLdiag注册为服务时,默认服务名称为SQLDIAG:

    SQLDIAG /R

    使用下面任一命令启动该服务:

    SQLDIAG START
    NET START SQLDIAG

    服务会使用默认的配置文件SQLDiag.XML,并将输出写入到SQLdiag 启动文件夹下名为 SQLDIAG 的子文件夹中。
    使用下面任一命令停止该服务:

    SQLDIAG STOP
    NET STOP SQLDIAG

    使用下面命令注销服务:

    SQLDIAG /U

    注册服务时,可以使用 /A 参数更改服务名称,还可以提供其他适当的参数:

    cd D:Program FilesMicrosoft SQL Server100ToolsBinn
    SQLdiag /R /A DIAG08R2 /I F:TroubleShootingSQLdiaginputSQLDiagPerfStats_Detailed_Trace2008new.XML /O F:TroubleShootingSQLdiagOUTPUT /E +00:05:00

    一般情况下提供/I 和/O参数就行,如果提供了/E参数,在达到指定时间会自动停止服务。
    使用下面任一命令启动该服务:

    SQLDIAG START /A DIAG08R2
    NET START DIAG$DIAG08R2

    使用下面命令注销服务:

    SQLDIAG /U /A DIAG08R2

    切勿使用命令提示符窗口中的退出按钮关闭数据收集过程。这可能导致Profiler跟踪或PerfMon文件被孤立,加剧已存在的问题。检查这种场景的最简单方法是Profiler或PerfMon文件将继续增大,你将无法移动或删除文件。Profiler跟踪可以很容易地使用sp_trace_setstatus命令停止。然而,孤立的PerfMon文件是另一回事,大多数情况下,你只能通过重启SQL Server服务来纠正,当在生产环境中操作时,这是绝对不是一个好的方案。
    注意,如果以服务启动数据收集,并且所使用的配置文件有使用自定义收集数据(比如SQL_2008_Perf_Stats.sql),记得将此类文件拷贝到SQLdiag启动文件夹中。

  • 相关阅读:
    【原】Go语言及Web框架Beego环境无脑搭建
    Treap学习笔记
    读书笔记--Head First PMP目录
    Linux操作系统常用命令合集——第四篇-文件系统权限操作(5个命令)
    Linux操作系统常用命令合集——第三篇-系统管理操作(25个命令)
    Linux操作系统常用命令合集——第二篇- 用户和组操作(15个命令)
    路由器与交换机配置——配置文件和系统映像备份与恢复
    路由器配置——密码重置
    交换机配置——端口安全
    路由器与交换机配置——交换机默认网关(实现跨网段telnet)
  • 原文地址:https://www.cnblogs.com/Uest/p/5078460.html
Copyright © 2011-2022 走看看