如何在不同的数据库上重放SQL事件探查器跟踪?

Jon*_*oln 5 sql-server profiler trace sql-server-2008

我在生产服务器上为特定数据库捕获了一个跟踪(模板:tsql_replay)(按数据库名称过滤).我想在我们的测试服务器上重播它,但当然测试服务器上的数据库ID是不同的.

到目前为止,我已经尝试将跟踪文件加载到表中并使用更新查询修改databaseid(请参阅下文),但是在尝试重放时,Profiler会给我一个错误(缺少事件等).如果我直接打开跟踪文件,它允许我重放它.所以不知何故,无论是加载到表中还是更改数据库ID都会让人感到困惑.

捕获重放跟踪的正确过程是什么,更改数据库应该重播?

select * into trace_table
from fn_trace_gettable('f:\trace\trace100222.trc', default)
go
update trace_table
set databaseid = 47
where databaseid = 16
Run Code Online (Sandbox Code Playgroud)

Gab*_*ães 3

您必须创建跟踪并将其保存为跟踪 XML 文件以便随后重播,然后打开 XML 并更改跟踪 XML 上的数据库 ID。

请注意,如果从sql 2008跟踪到sql 2000,则无法设置结束日期和时间,因为会出现ODBC日期时间错误。

但除此之外它正常工作。