重播 SQL Server 的标记语言 (RML) 实用工具

本文讨论支持专业人员用来排查 SQL Server Microsoft问题的工具组。

原始产品版本:SQL Server
原始 KB 数: 944837

什么是 RML 实用工具?

RML 实用工具是一组诊断工具,用于排查和帮助 SQL Server 中的性能问题。 你可以将其视为类似于帮助医疗技术人员处理 X 射线、MRI 和 CT 扫描结果的工具。 RML 实用工具用于处理和可视化用户收集的性能诊断数据。 SQL Server 支持工程师通常使用这些工具来处理诊断跟踪,同时排查性能问题。 此外,数据库开发人员和管理员经常使用 RML 实用工具从测试和生产环境分析和改进其 SQL Server 查询工作负荷。 套件中有三个实用程序:ReadTrace、记者和奥斯特雷斯。

  • ReadTrace 采用 用户创建的扩展事件 跟踪或 SQL 跟踪 跟踪来诊断 SQL Server 问题或分析工作负荷性能。 ReadTrace 将跟踪导入到用户指定的 SQL Server 数据库中的表中。 将 ReadTrace 视为转换工具:它采用二进制 .XEL 文件或 .TRC 文件并将其导入表,以便通过 SQL 查询更轻松地对其进行分析。 ReadTrace 还可以生成重播标记语言(。Ostress 可用于工作负荷重播的 RML) 文件。
  • 记者 是连接到 ReadTrace 创建的用户数据库的报表和可视化工具。 记者针对数据库运行 SQL 查询,并显示原始扩展事件或探查器跟踪的脱机 SSRS 报告摘要。 例如,报表可能会显示在特定捕获的工作负荷中运行时间最长的查询,这些查询使用了最多的 CPU,以及执行了最大读取。
  • Ostress 是一种压力测试模拟工具。 Ostress.exe 使用扩展事件或 SQL 探查器诊断跟踪作为输入。 它还可以接受用户提供的查询作为输入。 然后,Ostress 针对用户选择的 SQL Server 实例重播这些跟踪或查询。 目标是模拟压力。 例如,如果你提供类似 select * from table1OStress 的查询,则可以指示它同时在 50 个连接上运行查询 100 次。 除了单个查询,Ostress 还可以使用 ReadTrace 生成的特殊 RML 文件来执行重播。
  • OStress 重播控制代理(ORCA) 通过从 RML 文件重播工作负荷,帮助 Ostress 模拟压力测试。 你不会直接与 ORCA 交互,而是使用 Ostress。

有关每个工具和示例用法的完整说明,请参阅适用于 SQL Server 的 RML 实用工具中包含的 RML 帮助文件。

RML 实用工具如何有用?

可以使用适用于 SQL Server 的 RML 实用工具执行以下任务:

  • 确定使用最大资源的应用程序、数据库、SQL Server 登录名或查询。
  • 确定捕获批处理的跟踪时是否更改了批处理的执行计划。 此外,可以使用适用于 SQL Server 的 RML 实用工具来确定 SQL Server 如何运行这些计划。
  • 确定哪些查询运行缓慢。

为 SQL Server 实例捕获跟踪后,可以使用适用于 SQL Server 的 RML 实用工具对 SQL Server 的另一个实例重播跟踪文件。 如果在重播期间还捕获跟踪,则可以使用适用于 SQL Server 的 RML 实用工具将新的跟踪文件与原始跟踪文件进行比较。 可以使用此方法测试应用更改后 SQL Server 的行为方式。 例如,可以在执行以下任务后使用此技术来测试 SQL Server 的行为方式:

  • 安装 SQL Server Service Pack。
  • 安装 SQL Server 累积更新。
  • 更新存储过程或函数。
  • 更新或创建索引。

适用于 SQL Server 的 RML 实用工具的优点

如果想要模拟应用程序测试时无法使用实际应用程序进行测试,则适用于 SQL Server 的 RML 实用工具非常有用。 在测试环境中,生成生产环境中存在的相同用户负载可能很困难。 可以使用适用于 SQL Server 的 RML 实用工具在测试环境中重播生产工作负荷,并评估任何更改的性能效果。 例如,可以测试升级到 SQL Server 2008 或 SQL Server Service Pack 的应用程序。 此外,可以使用适用于 SQL Server 的 RML 实用工具来分析和比较各种重播工作负荷。 手动执行此类回归分析是困难的。

帮助文件包含快速入门主题。 本主题包括一个简短的练习,让你熟悉每个 RML 工具。 若要打开帮助文件,请选择“启动>SQL Server>的所有程序>RML 实用工具”。

下载位置和版本历史记录

可以检查此表中 RML 实用工具的版本历史记录,并从此处下载工具。

版本号 说明
09.04.0103 指示可从Microsoft下载中心获取的当前 Web 版本。 它支持所有发布的 SQL Server 版本(SQL Server 2022、SQL Server 2019、SQL Server 2017、SQL Server 2016、SQL Server 2014、SQL Server 2012、SQL Server 2008 R2 和 SQL Server 2008)。
09.04.0102 指示可从Microsoft下载中心获取的上一个 Web 版本。 它支持所有发布的 SQL Server 版本(SQL Server 2022、SQL Server 2019、SQL Server 2017、SQL Server 2016、SQL Server 2014、SQL Server 2012、SQL Server 2008 R2 和 SQL Server 2008)。
9.04.0100 指示可从Microsoft下载中心获取的以前 Web 版本。 它支持所有发布的 SQL Server 版本(SQL Server 2019、SQL Server 2017、SQL Server 2016、SQL Server 2014、SQL Server 2012、SQL Server 2008 R2、SQL Server 2008、SQL Server 2005 和 SQL Server 2000)。
9.04.0098 指示数据库实验助手工具随附的上一个 Web 发布包。 它支持所有已发布版本的 SQL Server。
9.04.0097 SQL Nexus 站点提供的以前版本,支持所有已发布版本的 SQL Server。
9.04.0051 可从支持 SQL Server 2014、SQL Server 2012、SQL Server 2008 R2、SQL Server 2008、SQL Server 2005 和 SQL Server 2000 的Microsoft下载中心获取以前的 Web 版本。
9.04.0004 支持 SQL Server 2014、SQL Server 2012、SQL Server 2008 R2、SQL Server 2008、SQL Server 2005 和 SQL Server 2000 的以前 Web 版本。
9.01.0109 以前支持 SQL Server 2008 R2、SQL Server 2008、SQL Server 2005 和 SQL Server 2000 的 Web 版本。
9.00.0023 以前支持 SQL Server 2005 和 SQL Server 2000 的 Web 版本。
8.10.0010 支持 SQL Server 2000 和 SQL Server 7.0 的初始 Web 版本。

适用于 SQL Server 的 RML 实用工具的当前版本取代了任何早期版本。 安装当前版本之前,必须先卸载适用于 SQL Server 的 RML 实用工具的任何早期版本。 该工具套件的当前版本包含重要的软件更新、改进的功能(进程 .trc.xel 文件)和报表,以及性能和可伸缩性改进。

获取适用于 SQL Server 的 RML 实用工具

  • 可从Microsoft下载中心下载适用于 SQL Server 的 RML 实用工具。

  • 安装数据库实验助手后,你将在文件夹中找到 RML 工具(ReadTraceOStress)。C:\Program Files (x86)\Microsoft Corporation\Database Experimentation Assistant\Dependencies\X64\

备注

Microsoft按原样为 SQL Server 提供 RML 实用工具。 Microsoft客户支持服务(CSS)不提供套件支持。 如果你有建议或想要报告 bug,则可以在帮助文件(RML Help.docx)的“问题和帮助”一文中使用电子邮件地址。 适用于 SQL Server 的 RML 实用工具包含帮助文件。

适用于 SQL Server 的 RML 实用工具的依赖项

重要

作为 RML 工具套件的一部分提供的应用程序要求提供其他几个控件。

记者的依赖项

必须确保报表查看器控件在与Reporter.exe相同的文件夹中或全局程序集缓存(GAC)中可用。 Reporter.exe要求的 DLL 为:

  • Microsoft.ReportViewer.Common.dll
  • Microsoft.ReportViewer.DataVisualization.dll
  • Microsoft.ReportViewer.ProcessingObjectModel.dll
  • Microsoft.ReportViewer.WinForms.dll
  1. 最新版本的 RML 实用工具在应用程序文件夹中包括这些 DLL。

  2. 如果不可用,可以使用以下 PowerShell 脚本下载这些 DLL:

    Register-PackageSource -Name MyNuGet -Location https://www.nuget.org/api/v2 -ProviderName NuGet
    Get-PackageSource
    
    Find-Package Microsoft.ReportViewer.Common -AllVersions
    Install-Package Microsoft.ReportViewer.Common -RequiredVersion 10.0.40219.1
    
    Copy-Item -Path "C:\Program Files\PackageManagement\NuGet\Packages\Microsoft.ReportViewer.Common.10.0.40219.1\lib\Microsoft.ReportViewer.Common.dll" -Destination "C:\Program Files\Microsoft Corporation\RMLUtils"
    Copy-Item -Path "C:\Program Files\PackageManagement\NuGet\Packages\Microsoft.ReportViewer.Common.10.0.40219.1\lib\Microsoft.ReportViewer.DataVisualization.dll" -Destination "C:\Program Files\Microsoft Corporation\RMLUtils"
    Copy-Item -Path "C:\Program Files\PackageManagement\NuGet\Packages\Microsoft.ReportViewer.Common.10.0.40219.1\lib\Microsoft.ReportViewer.ProcessingObjectModel.dll" -Destination "C:\Program Files\Microsoft Corporation\RMLUtils"
    
    Find-Package Microsoft.ReportViewer.WinForms -AllVersions
    Install-Package Microsoft.ReportViewer.WinForms -RequiredVersion 10.0.40219.1
    
    Copy-Item -Path "C:\Program Files\PackageManagement\NuGet\Packages\Microsoft.ReportViewer.WinForms.10.0.40219.1\lib\Microsoft.ReportViewer.WinForms.dll" -Destination "C:\Program Files\Microsoft Corporation\RMLUtils"
    
  3. 必须下载并安装 ReporterViewer 修补程序,以允许 ReadTrace 报表中的链接正常工作。 若要下载 ReporterViewer 修补程序,请转到 Microsoft Visual Studio 2010 Service Pack 1 报表查看器(KB2549864)。

扩展器依赖项(可选)

在大多数情况下,ReadTrace 用于处理 CAB/ZIP/RAR 文件的 Expander 未使用。 但是,如果需要将此功能用于特定的压缩文件类型,请确保压缩和解压缩控件在与 Expander.exe 或 GAC 相同的文件夹中可用。 Expander.exe要求的 DLL 如下所示:

  • BRICOLSOFTZipx64.dll
  • UnRar64.dll
  • XceedZipX64.dll

可以从供应商的相应软件包获取这些 DLL:

ReadTrace 和 Ostress 的依赖项

ReadTrace 和 Ostress 使用作为 SQL Server Native Client一部分提供的 ODBC 和 OLEDB 驱动程序。 从版本 09.04.0103 开始,RML 实用工具套件不依赖于 SQL Server Native Client (SNAC)。 它可以在安装的系统上使用 Microsoft ODBC 或 OLEDB 驱动程序。

如果计划分析扩展事件文件(*.xel),请确保 系统上安装了 Visual C++ 2010 Redistributable

已知问题和修补程序

问题 解决方案
ReadTrace 遇到错误“无法连接到指定的服务器。 初始 HRESULT:在未安装 SQL Server 或仅安装 SQL Server 2022 的计算机上0x80040154” 修复了版本 09.04.0103。 解决方法是安装 SQL Server Native Client 或其他版本的 SQL Server。 未注册的 HRESULT 0x80040154 REGDB_E_CLASSNOTREG 类是头文件 winerror.h ,这意味着 COM 组件未注册,因为它可能未安装。 之所以发生这种情况,是因为 SQL Server 2022 未寄送 SQL Server Native Client。
ReadTrace 遇到“ERROR:事件运行时检查:事件序列209494时检测到缺少列 [sp_cache_remove cached_text] 修复了版本 09.04.0102。 解决方法是,可以将跟踪标志 (-T28 -T29) 添加到 ReadTrace 命令行。
记者遇到“无法加载文件或程序集”Reporter,Version=9.4.10000.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35“或其依赖项之一。 强名称验证失败。 (HRESULT 异常:0x8013141A) 修复了版本 09.04.0102。 解决方法是,可以创建以下注册表项来替代强名称验证: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\Reporter,31BF3856AD364E35
ReadTrace 失败,并出现错误“无法连接到指定的服务器。 初始 HRESULT:0x80040154”。 Ostress 失败,出现错误“尝试建立连接失败。 SSL 安全错误。” 请参阅安装 SQL Server Native Client 的说明。
遇到 ReadTrace“未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集”Microsoft.SqlServer.XEvent.Linq.dll“或其依赖项之一。 找不到指定的模块。 安装 Visual C++ 2010 Redistributable

示例

以下示例演示如何使用某些 RML 工具。

使用ReadTrace.exe在数据库中导入扩展事件(Xevent)数据

使用 ReadTrace.exe 导入使用 PSSDIAG/SQLDiag.exeSQL LogScout 等工具收集的一系列 Xevent 文件。 -I如果存在多个文件,请使用参数指向及时收集的第一个 .xel 文件。 对于所有命令行开关,请使用 ReadTrace.exe /?

ReadTrace.exe -Iserver_instance_20220211T1319480819_xevent_LogScout_target_0_132890707717540000.xel -oc:\temp\output -f -dPerfAnalysisDb -S.

使用Ostress.exe对查询进行压力测试

使用 OStress 针对运行 SQL Server 的服务器提交查询,方法是同时运行 30 个连接,并在每个连接上运行查询 10 次。 对于所有命令行开关,请使用 Ostress.exe /?

ostress.exe -E -dmaster -Q"select name from sys.databases" -n30 -r10

使用 ReadTrace 和 Ostress 生成和重播 RML 文件

生成 。RML 文件,使用如下命令:

ReadTrace -I"D:\RMLReplayTest\ReplayTrace.trc" -o"D:\RMLReplayTest\RML" -S. -dReadTraceTestDb   

有关需要捕获哪些事件来创建重播跟踪的详细信息,请参阅 RML Help.docx

若要使用 Ostress 重播 RML 文件,请使用如下所示的命令:

ostress.exe -S.\sql2022 -E -dAdventureWorks2022 -i"D:\RMLReplayTest\RML\SQL00069.rml" -o"D:\RMLReplayTest\RML\output"

可以使用 重播所有 RML 文件 *.RML。 例如:-i"D:\RMLReplayTest\RML\*.rml"

第三方联系人免责声明

Microsoft 会提供第三方联系信息来帮助你查找有关本主题的其他信息。 此联系信息可能会更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。

其他资源

SQL Server 本地和混合方案的故障排除和诊断工具