重播要求

适用于:SQL ServerAzure SQL 托管实例

若要使用 SQL Server Profiler 或 Distributed Replay 实用工具重播跟踪数据,则必须在跟踪中捕获一组特定的事件类和列。 如果使用 TSQL_Replay 跟踪模板配置稍后用于重播的跟踪,则会默认启用这些设置。 本主题介绍这些设置以及其他重播要求。

应使用 Distributed Replay 实用工具重播密集型 OLTP 应用程序(具有许多活动并发连接或高吞吐量)。 Distributed Replay 实用工具可以从多台计算机重播跟踪数据,并更好地模拟任务关键型工作负荷。 有关详细信息,请参阅 SQL Server Distributed Replay 概述

重播所需的事件类

若要通过 SQL Server Profiler 进行重播,除了要监视的任何其他事件类之外,还必须在跟踪中捕获以下一组事件类:

  • CursorClose (仅当重播服务器端游标时才需要)
  • CursorExecute(仅在重播服务器端游标时需要)
  • CursorOpen(仅在重播服务器端游标时需要)
  • CursorPrepare(仅在重播服务器端游标时需要)
  • CursorUnprepare(仅在重播服务器端游标时需要)
  • 审核登录
  • 审核注销
  • ExistingConnection
  • RPC 输出参数
  • RPC:Completed
  • RPC:启动
  • Exec 已准备 SQL(仅在重播服务器端准备的 SQL 语句时需要)
  • 准备 SQL(仅在重播服务器端准备的 SQL 语句时需要)
  • SQL:BatchCompleted
  • SQL:BatchStarting

重播所需的数据列

除任何其他要捕获的数据列外,还必须在跟踪内捕获下列数据列才能重播跟踪:

  • 事件类
  • EventSequence
  • TextData
  • 应用程序名称
  • LoginName
  • 数据库名称
  • 数据库 ID
  • ClientProcessID
  • 主机名
  • ServerName
  • 二进制数据
  • SPID
  • 开始时间
  • EndTime
  • IsSystem
  • NTDomainName
  • NTUserName
  • 错误

将跟踪模板 TSQL_Replay 用于捕获重播数据的跟踪。

其他重播要求

在 Microsoft SQL Server 中,重播将检查是否存在所需的事件和列。 此更改有助于改进重播的准确性,从而在缺少所需数据的情况下对重播进行故障排除时无需进行任何猜测。 当跟踪中缺少所需的数据时,重播将会返回一个错误,并停止重播文件。

若要重播对运行 SQL Server 的服务器(目标)而非最初跟踪的服务器(源)的跟踪,请确保已执行下列操作:

  • 必须在目标上而且是在与源相同的数据库中创建跟踪包含的所有登录名和用户。

  • 目标中的所有登录名和用户具有的权限必须与源中的相同。

  • 所有登录密码必须是执行重播的用户的密码。

  • 目标上的数据库 ID 最好与源上的数据库 ID 相同。 但是,如果它们不相同,当跟踪中出现 DatabaseName 时,将根据它进行匹配。

  • 必须将跟踪内包含的每个登录名的默认数据库在目标上设置成登录名各自的目标数据库。 例如,在源上,要重播的跟踪包含数据库 Fred_Db 内登录名 Fred 的活动。 因此在目标上,必须将登录名 Fred 的默认数据库设置成与 Fred_Db 相匹配的数据库(即使数据库名称不同)。 若要设置登录的默认数据库,请使用 sp_defaultdb 系统存储过程。

重播与不存在的或不正确的登录名相关的事件会导致重播错误,但重播操作会继续。

有关重播跟踪所需的权限的信息,请参阅 运行 SQL Server Profiler 所需的权限