在数据库试验助手中重播跟踪

注意

此工具将于 2024 年 12 月 15 日停用。 对于出现的任何问题,我们将停止支持此工具,并且不会发布任何缺陷修复或进一步更新。

在数据库试验助手 (DEA)中,可以针对升级的测试环境重播捕获的跟踪文件。 例如,请考虑在 SQL Server 2008 R2 上运行的生产工作负荷。 工作负荷的跟踪文件必须重播两次:一次在生产环境中运行同一版本的 SQL Server,第二次在具有升级目标 SQL Server 版本的环境(例如 SQL Server 2016)上运行。

注意

重播跟踪需要手动设置虚拟机或物理计算机以运行 Distributed Replay 跟踪。 有关详细信息,请参阅为数据库试验助手配置 Distributed Replay

为目标 1 配置跟踪重播

首先,需要针对目标 1 执行跟踪重播,其表示现有的生产环境。

  1. 在 DEA 的左侧导航栏中,选择箭头图标,然后在“所有重播”页上,选择“新建重播”。

    在 DEA 中创建重播

    注意

    Distributed Replay 控制器计算机需要你用于远程连接的用户帐户的权限。

  2. 在“重播详细信息”下的“新重播”页上,输入或选择以下信息

    • 重播名称:输入跟踪重播的名称。

    • 源跟踪格式:指定源跟踪文件的格式(跟踪或 XEvents)。

    • 源文件的完整路径:指定源跟踪文件的完整路径。 如果使用 DReplay,则该文件必须存在于充当 DReplay 控制器的计算机上,并且用户帐户需要访问文件和文件夹。

    • 重播工具:指定重播工具(DReplay 或 InBuilt)。

    • 控制器计算机名称:指定用作 Distributed Replay 控制器的计算机的名称。

    • 重播跟踪位置:指定用于存储与跟踪重播关联的跟踪文件/XEvent 的路径。

      注意

      对于 Azure SQL 数据库或 Azure SQL 托管实例,则需要提供 Azure Blob 存储帐户的 SAS URI。

  3. 通过选中“是,我已手动还原数据库”复选框来确认已经还原数据库。

  4. 在“SQL Server 连接详细”信息下,输入或选择以下信息:

    • 服务器类型:指定 SQL Server 的类型(SqlServer、AzureSqlDb、AzureSqlManagedInstance)。
    • 服务器名称:指定 SQL Server 的服务器名称或 IP 地址。
    • 身份验证类型:选择“Windows”作为身份验证类型。
    • 数据库名称:输入要在其中启动服务器端跟踪的数据库的名称。 如果未指定数据库,则会在服务器上的所有数据库上捕获跟踪。
  5. 根据具体应用场景,选择或取消选择“加密连接”和“信任服务器证书”复选框。

    “新建重播”页

在目标 1 上启动跟踪重播

  • 输入或选择必填信息后,选择“开始”启动跟踪重播

    如果输入的信息有效,则 Distributed Replay 进程将启动。 否则,带有不正确信息的文本框将突出显示为红色。 请确保输入的值正确,然后选择“开始”。

    针对目标 1 重播进度

    可以根据需要监视该过程。 重播完成后,DEA 会将结果存储在指定位置的文件中。

    目标 1 重播完成

针对目标 2 执行跟踪重播

完成针对目标 1 的跟踪重播后,需要针对第二个目标执行相同的操作,该目标表示预期的升级环境。

  1. 这次使用与目标 2 环境关联的详细信息配置跟踪重播。

  2. 在目标 2 上启动跟踪重播。

    可以根据需要监视该过程。 重播完成后,DEA 会将结果存储在指定位置的文件中。

有关跟踪重播的常见问题

问:在目标服务器上启动重播捕获需要什么安全权限?

  • 在 DEA 应用程序中运行跟踪操作的 Windows 用户必须在运行 SQL Server 的目标计算机上具有 sysadmin 权限。 启动跟踪需要这些用户权限。
  • 运行 SQL Server 的目标计算机所在的服务帐户必须具有对指定跟踪文件路径的写入访问权限。
  • 运行 Distributed Replay 客户端服务的服务帐户必须具有连接到运行 SQL Server 的目标计算机和执行查询的用户权限。

问:是否可以在同一会话中启动多个重播?

是的,可以启动多个重播并在同一会话中跟踪它们以完成。

问:是否可以并行启动多个重播?

是的,但不具有“控制器和客户端”中选择的相同计算机集。 控制器和客户端将繁忙。 在“控制器和客户端”下设置一组单独的计算机,以启动并行重播

问:重播通常需要多长时间才能完成?

重播通常需要与源跟踪加上预处理源跟踪所需时间之相同的时间。 但是,如果向控制器注册的客户端计算机不足以管理从重播生成的负载,则重播可能需要更长的时间才能完成。 最多可以将 16 台客户端计算机注册到控制器。

问:目标跟踪文件有多大?

目标跟踪文件的大小可以是源跟踪大小的 5 到 15 倍。 文件大小基于运行的查询数。 例如,查询计划 blob 可能很大。 如果这些查询的统计信息经常发生更改,则捕获更多事件。

问:为什么需要还原数据库?

SQL Server 是有状态关系数据库管理系统。 若要正确运行 A/B 测试,必须始终保留数据库的状态。 否则,在重播期间,你可能会在查询中看到不会出现在生产中的错误。 为防止这些错误,建议在源捕获之前进行备份。 同样,在运行 SQL Server 的目标计算机上还原备份是防止重播期间出错所必需的。

问:重播页上的“传递 %”是什么意思?

“传递 %”表示仅传递了某个百分比的查询。 可以诊断是否应有错误数。 错误可能是预期的,或者可能会因为数据库失去其完整性而发生错误。 如果“传递 %”的值不是预期值,则可以停止跟踪并查看 SQL Profiler 中的跟踪文件,以查看哪些查询未成功。

问:如何查看重播期间收集的跟踪事件?

打开目标跟踪文件并在 SQL Profiler 中查看它。 或者,如果要对重播捕获进行修改,所有 SQL Server 脚本都可以在 C:\Program Files (x86)\Microsoft Corporation\Database Experimentation Assistant\Scripts\StartReplayCapture.sql 中获得。

问:DEA 在重播期间收集哪些跟踪事件?

DEA 捕获包含性能相关信息的跟踪事件。 捕获配置位于 StartReplayCaptureTrace.sql 脚本中。 这些事件是 sp_trace_setevent (Transact-SQL) 参考文档中所列的典型 SQL Server 跟踪事件。

排查跟踪重播问题

问:为什么无法连接到运行 SQL Server 的计算机?

  • 确认运行 SQL Server 的计算机的名称有效。 若要确认,请尝试使用 SQL Server Management Studio (SSMS) 连接到服务器。
  • 确认防火墙配置不会阻止与运行 SQL Server 的计算机的连接。
  • 确认用户具有所需的用户权限。
  • 确认 Distributed Replay 客户端的服务帐户有权访问运行 SQL Server 的计算机。

可以在 %temp%\DEA 的日志中获取更多详细信息。 如果问题持续出现,请联系产品团队。

问:为什么无法连接到 Distributed Replay 控制器?

  • 验证 Distributed Replay 控制器服务是否正在控制器机器上运行。 若要验证,请使用 Distributed Replay 管理工具(运行命令 dreplay.exe status -f 1)。
  • 如果远程启动重播:
    • 确认运行 DEA 的计算机可以成功 ping 控制器。 确认防火墙设置允许根据“配置重播环境”页上的说明进行连接。 有关详细信息,请参阅文章 SQL Server Distributed Replay
    • 确保 Distributed Replay 控制器的用户允许 DCOM 远程启动和远程激活。
    • 确保 Distributed Replay 控制器的用户拥有 DCOM 远程访问用户权限。

问:我的计算机上存在跟踪文件路径。 为什么 Distributed Replay 控制器找不到它?

Distributed Replay 只能访问本地磁盘资源。 在开始重播之前,必须将源跟踪文件复制到 Distributed Replay 控制器计算机。 此外,必须提供 DEA“新建重播”页上的路径。

UNC 路径与 Distributed Replay 不兼容。 Distributed Replay 路径必须是第一个源跟踪文件的本地绝对路径,包括扩展名。

问:为什么无法在“新建重播”页面上浏览文件?

由于无法浏览远程计算机上的文件夹,因此浏览文件并不有用。 复制和粘贴绝对路径更高效。

问:我已开始使用跟踪重播,但 Distributed Replay 未重播任何事件。 为什么?

由于跟踪文件没有可重播事件,或没有关于如何重播事件的信息,因此可能会出现此问题。 确认提供的跟踪文件路径是否指向源跟踪文件。 源跟踪文件是使用 StartCaptureTrace.sql 脚本中提供的配置创建的。

问:当我尝试使用 SQL Server 2017 Distributed Replay 控制器预处理跟踪文件时,我看到“发生意外错误!”。 为什么?

此问题已知会发生在 SQL Server 2017 的 RTM 版本中。 有关详细信息,请参阅使用 DReplay 功能重播 SQL Server 2017 中捕获的跟踪时出现意外错误

此问题已在 SQL Server 2017 最新的累积更新 1 中得到解决。 下载最新版本的 SQL Server 2017 的累积更新 1

另请参阅

  • 若要创建有助于深入了解建议的更改的分析报告,请参阅“创建报告”