在数据库实验助手中回放跟踪

注意

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

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

注意

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

为目标 1 配置跟踪重播

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

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

    DEA 中创建重播的屏幕截图。

    注意

    用于远程连接的用户帐户需要分布式重播控制器计算机的权限。

  2. 新重播 页上,在 重播详情下,输入或选择以下信息:

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

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

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

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

    • 控制器计算机名称:指定用作分布式重播控制器的计算机的名称。

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

      注意

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

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

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

    • 服务器类型:指定 SQL Server 的类型(SqlServerAzureSqlDbAzureSqlManagedInstance)。
    • 服务器名称:指定 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 倍。 文件大小基于运行的查询数。 例如,查询计划块可能很大。 如果这些查询的统计信息经常发生更改,则捕获更多事件。

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

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

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

通过 % 意味着通过的查询仅占一定比例。 可以诊断错误数量是否符合预期。 错误可能是预期的,或者可能会因为数据库丢失其完整性而发生错误。 如果 传递 % 的值不是预期值,则可以停止跟踪,并查看 SQL Profiler 中的跟踪文件以查看哪些查询未成功。

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

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

问: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 管理工具(运行命令 dreplay.exe status -f 1)。
  • 如果远程启动重播:
    • 确认运行 DEA 的计算机可以成功 ping 控制器。 确认防火墙设置允许根据 “配置重播环境” 页上的说明进行连接。 有关详细信息,请参阅 SQL Server Distributed Replay 概述一文。
    • 请确保为分布式重播控制器的用户启用 DCOM 远程启动和远程激活权限。
    • 确保分布式重播控制器的用户被赋予了 DCOM 远程访问的用户权限。

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

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

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

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

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

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

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

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

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

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