如何使用 Sqldumper.exe 实用程序在 SQL Server 中生成转储文件

文章翻译 文章翻译
文章编号: 917825 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

Sqldumper.exe 实用程序将包含在 Microsoft SQL Server 2005年,Microsoft SQL Server 2008年,Microsoft SQL Server 2008 R2,Microsoft SQL Server 2012年。本文介绍如何使用 Sqldumper.exe 实用程序生成转储文件的 Watson 错误报告或调试任务。

更多信息

可以使用 Sqldumper.exe 实用程序生成转储文件的任何 Microsoft Windows 应用程序的即需即装。例如,您可以生成转储文件进行调试应用程序问题时正在运行 SQL Server 2005,Microsoft SQL Server 2008年,Microsoft SQL Server 2008 R2,一台计算机或 Microsoft SQL Server 2012年没有响应用户请求。转储文件可以是小型转储文件,完全转储文件或已筛选的转储文件。

但是,不能为一般用途调试使用 Sqldumper.exe 实用程序。有关一般用途的调试的更多信息,请访问下面的 Microsoft Web 站点:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
SQL Server 进程调用 Sqldumper.exe 实用程序内部进程遇到任何异常时生成转储文件。SQL Server 将标志传递给 Sqldumper.exe 实用程序。跟踪标记用于更改 SQL Server 将传递给异常的上下文中或断言的上下文中的实用程序的标志。这些跟踪标志是介于 2540年-2559 之间。可以使用这些跟踪标记来生成转储文件的某些类型。例如:
  • 跟踪标志 2551年: 生成的筛选的内存转储
  • 跟踪标记 2544年: 生成完全内存转储
  • 跟踪标志 2546年: 在转储文件中的 SQL Server 转储所有线程
  • 跟踪标志 8026: SQL Server 将清除 dumptrigger 后一次生成转储
如果两个或多个跟踪标记处于活动状态,该选项指出最大内存转储将得到遵守。如果使用跟踪标志 2551年和 2544年,SQL Server 将创建完全内存转储。

如何获取 Microsoft Windows 应用程序进程标识符

若要通过使用 Sqldumper.exe 实用程序生成转储文件,必须具有您要为其生成转储文件的 Windows 应用程序的进程标识符。若要获取进程标识符,请执行以下步骤:
  1. 按 CTRL + ALT + DELETE,然后单击 任务管理器.
  2. 在中 Windows 任务管理器 对话框中,单击 进程 选项卡。
  3. 视图 菜单上,单击 选择列.
  4. 在中 选择列 对话框中,单击以选中 PID (进程标识符) 复选框,然后再单击 确定.
  5. 请注意您要为其生成转储文件的 Windows 应用程序的进程标识符。SQL Server 应用程序时,请注意 Sqlservr.exe 进程的进程标识符。
  6. 关闭 任务管理器.
您也可以使用 SQL Server 错误日志文件在您的计算机运行的 SQL Server 应用程序的进程标识符。例如,SQL Server 错误日志文件组成部分如下所示:

2006-04-18 09:53:03.94 服务器 Microsoft SQL Server 2005 年 9.00.1399.06 (英特尔 x86)
2005 年 10 月 14 00:33:37
版权所有 (c) 1988年-2005 年,Microsoft 公司
在 Windows NT 5.2 版 (生成 3790: 服务包 1)

2006-04-18 09:53:03.94 服务器 (c) 2005年微软公司。
2006-04-18 09:53:03.94 服务器保留所有权利。
3716 2006年-04-18 09:53:03.94 服务器进程 ID。

之后显示的数字 服务器进程 ID 是为 Sqlservr.exe 的进程的进程标识符。

如何在运行 Sqldumper.exe 实用程序

运行 SQL Server 最初安装该实用程序的文件夹的上下文下的 Sqldumper.exe 实用程序。默认情况下,Sqldumper.exe 实用程序的安装路径如下所示:
SQLServerInstallDrive: \Program Files\Microsoft SQL Server\90\Shared\SQLDumper.exe
注意SQLServerInstallDrive 是一个占位符,SQL Server 2005 的安装位置的驱动器。

若要通过使用 Sqldumper.exe 实用程序生成转储文件,请执行以下步骤:
  1. 打开下面的文件夹:
    SQLServerInstallDrive: \Program Files\Microsoft SQL Server\编号\Shared
    注意在文件夹路径中, 编号 是占位符,下列选项之一:
    • 文件夹名称是 SQL Server 2012年的 110。
    • 文件夹名称是 SQL Server 2008 年 100。
    • SQL Server 2005 的文件夹名称 90。

  2. 请确保 Dbghelp.dll 文件位于该文件夹中。
  3. 单击 开始请单击 运行键入 cmd然后单击 确定.
  4. 在命令提示符处,键入下面的命令,然后按 enter 键:
    cd SQLServerInstallDrive: \Program Files\Microsoft SQL Server\编号\Shared
    注意在文件夹路径中,数字是占位符,下列选项之一:
    • 文件夹名称是 SQL Server 2012年的 110。
    • 文件夹名称是 SQL Server 2008 年 100。
    • SQL Server 2005 的文件夹名称 90。
  5. 若要生成一种特定的转储文件,请在命令提示符下,键入相应的命令,然后按 enter 键:
    • 完全转储文件
      Sqldumper.exe 结果 0 0x01100
    • 小型转储文件
      Sqldumper.exe 结果 0 0x0120
    • 小型转储文件,其中包括间接引用的内存
      Sqldumper.exe 结果 0 0x0120:40
    • 已筛选的转储文件
      Sqldumper.exe 结果 0 0x8100
    注意结果 为您要为其生成转储文件的 Windows 应用程序的进程标识符的占位符。
如果成功运行 Sqldumper.exe 实用程序,该实用程序在该文件夹中安装该实用程序生成转储文件。

Sqldumper.exe 实用程序生成转储文件包含类似于以下文件名称模式:
SQLDmprxxxx.mdmp
在此模式中, xxxx 越来越多的决定基于其他具有类似的文件名相同的文件夹中的文件。如果已指定模式的文件名称,该文件夹中的文件,可能需要将日期和时间创建的文件来确定所需的文件进行比较。

其他信息和注意事项

当 Sqldumper.exe 实用程序生成转储文件的 Windows 应用程序时,转储文件可能倍的 Windows 应用程序当前正在使用的内存。请确保 Sqldumper.exe 实用程序正在向其写入转储文件的驱动器上有足够的磁盘空间。

您可以指定 Sqldumper.exe 实用程序写入转储文件的目录。在您运行 Sqldumper.exe 实用程序之前,该目录必须已经存在。否则,Sqldumper.exe 实用程序将会失败。不要使用 UNC 路径作为一个位置的转储文件。下面是如何指定转储文件的位置的小型转储文件的示例:
  1. 单击 开始请单击 运行键入 cmd然后单击 确定.
  2. 在命令提示符处,键入下面的命令,然后按 enter 键:
    cd SQLServerInstallDrive: \Program Files\Microsoft SQL Server\编号\Shared
    注意在文件夹路径中, 编号 是占位符,下列选项之一:
    • 文件夹名称是 SQL Server 2012年的 110。
    • 文件夹名称是 SQL Server 2008 年 100。
    • SQL Server 2005 的文件夹名称 90。
  3. 在命令提示符下,键入以下命令,然后按 enter 键:
    Sqldumper.exe 结果 0 0x0120 0 MdumpPath
    注意MdumpPath是一个占位符的 Sqldumper.exe 实用程序写入转储文件的目录。默认情况下,该文件写入当前文件夹。
如果您指定完全转储文件或生成经过筛选的转储文件,Sqldumper.exe 实用程序可能需要几分钟的时间以生成转储文件。时间取决于如下变量:
  • Sqldumper.exe 实用程序当前正在使用的内存量
  • 该实用程序正在向其写入转储文件驱动器的速度
在此期间,Sqldumper.exe 实用程序将不处理命令。您会注意到服务器已停止响应。此外,可能会发生群集故障转移。

若要运行 Sqldumper.exe 实用程序,您必须在登录到 Windows 通过使用下列方法之一:
  • 使用的帐户是计算机上的管理员组的成员。
  • 使用相同的用户帐户下运行 SQL Server 服务。
若要通过远程桌面或终端服务成功运行 Sqldumper.exe 实用程序,您必须以控制台模式启动远程桌面或终端服务。例如,若要以控制台模式启动远程桌面,请单击 开始请单击 运行键入 mstsc /console然后单击 确定.请注意如果目标服务器在运行 Windows 2000, /console选项被忽略。您可以连接到远程桌面服务器。但您将无法使用控制台会话。
如果您注意到没有转储已生成文件在当前文件夹中运行 Sqldumper.exe 实用程序后,检查已生成了该实用程序在命令行以确定失败的可能原因的信息。此信息也会记录在当前目录中的 Sqldumper_errorlog.log 文件中。以下是两个可能的错误消息的原因:
第一条消息
OpenProcess 失败 0x57-参数不正确

一个无效的进程 ID 传递给 Sqldumper.exe 实用程序。
消息 2
线程 id-<invalid parameter="">参数错误值无效</invalid>

无效的参数传递给 Sqldumper.exe 实用程序。

如果生成类似于下列内容之一的错误消息,则可以安全地忽略此消息:

在小型转储 6 回调未知的类型
小型转储 7 期间回调未知的类型

群集故障切换和 Sqldumper.exe 实用程序

在群集故障转移情况下,SQL Server 资源 DLL 现在可以获得转储文件前发生故障转移。当 SQL Server 资源 DLL 确定 SQL Server 资源出现故障时,SQL Server 资源 DLL 使用 Sqldumper.exe 实用程序来获取 SQL Server 进程的转储文件。若要确保 Sqldumper.exe 实用程序成功地生成转储文件,必须作为系统必备组件设置以下三个属性:
  • SqlDumperDumpTimeOut
    用户指定的超时。资源 DLL 在等待完成后才资源 DLL 的转储文件停止 SQL Server 服务。
  • SqlDumperDumpPath
    其中的 Sqldumper.exe 实用程序生成转储文件的位置。
  • SqlDumperDumpFlags
    Sqldumper.exe 实用程序使用的标志。
如果未设置属性中的任何一个,Sqldumper.exe 实用程序无法生成转储文件。资源联机时,在事件日志中和群集日志中将会记录一条警告消息。

要设置为群集故障修复的 Sqldumper.exe 实用程序属性,请执行以下步骤:
  1. 单击 开始请单击 运行键入 cmd然后单击 确定.
  2. 对于每个属性,在命令提示符下,键入相应的命令,然后按 enter 键:
    • " SqlDumperDumpFlags 属性
      若要设置 SqlDumperDumpFlags 属性的一种特定的转储文件中,在命令提示符下,键入相应的命令,然后按 enter 键:
      • 所有线程完全转储文件
        • 默认实例
          群集资源"SQL Server"/priv SqlDumperDumpFlags = 0x01100
        • 命名的实例
          群集资源"SQL Server 实例 (1)"/priv SqlDumperDumpFlags = 0x01100
      • 所有线程小型转储文件
        • 默认实例
          群集资源"SQL Server"/priv SqlDumperDumpFlags = 0x0120
        • 命名的实例
          群集资源"SQL Server 实例 (1)"/priv SqlDumperDumpFlags = 0x0120
      • 筛选所有线程转储文件
        • 默认实例
          群集资源"SQL Server"/priv SqlDumperDumpFlags = 0x8100
        • 命名的实例
          "SQL Server 群集资源实例 (1)"/priv SqlDumperDumpFlags = 0x8100
    • "SqlDumperDumpPath 属性
      群集资源"SQL Server"/priv SqlDumperDumpPath = DirectoryPath
      注意 DirectoryPath 是占位符的目录,在其中将生成转储文件,并应指定引号 ("")。
    • " SqlDumperDumpTimeOut 属性
      群集资源"SQL Server"/priv SqlDumperDumpTimeOut = 超时
      注意 超时 为以毫秒 (ms) 为单位的超时值的占位符。

      该实用程序生成一个 SQL Server 进程的转储文件所花费的时间取决于计算机的配置。对于有大量内存的计算机,则时间可能显著。若要获取此过程花费的时间的估计值,请使用 Sqldumper.exe 实用程序手动生成转储文件。有效的值 SqlDumperDumpTimeOut 属性是从 10000 ms ;MAXDWORD. MAXDWORD 表示的 dword 值数据类型 (4294967295) 范围内的最高值。
要验证已启用了这些设置,可以运行下面的命令:
群集资源"SQL Server"/priv"

要删除群集故障转移的 Sqldumper.exe 实用程序属性,请执行以下步骤:
  1. 单击 开始请单击 运行键入 cmd然后单击 确定.
  2. 对于特定的属性,在命令提示符下,键入相应的命令,然后按 enter 键:
    • " SqlDumperDumpFlags 属性
      • 默认实例
        群集资源"SQL Server"/priv:SqlDumperDumpFlags /usedefault
      • 命名的实例
        群集资源"SQL Server 实例 (1)"/priv:SqlDumperDumpFlags /usedefault
    • " SqlDumperDumpPath 属性
      • 默认实例
        群集资源"SQL Server"/priv:SqlDumperDumpPath /usedefault
      • 命名的实例
        "SQL Server 群集资源实例 (1)"/priv:SqlDumperDumpPath /usedefault
    • " SqlDumperDumpTimeOut属性
      • 默认实例
        群集资源"SQL Server"/priv:SqlDumperDumpTimeOut /usedefault
      • 命名的实例
        "SQL Server 群集资源实例 (1)"/priv:SqlDumperDumpTimeOut /usedefault

属性

文章编号: 917825 - 最后修改: 2013年2月4日 - 修订: 3.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Express Edition
关键字:?
kbsql2005tool kbexpertiseadvanced kbhowto kbinfo kbmt KB917825 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 917825
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com