技术开发 频道

使用TMO监测和诊断SQL Server

  3、TraceReplay类提供了5个事件,你可以通过提供你自己的event handler来进一步控制重放操作,其中最有用的event是ReplayEvent,它将在每个event被重放之前调用,你可以控制是否跳过该event的重放。

  下面的代码在设置了ReplayEvent的处理函数后启动重放。请注意Start函数是同步操作,它将一直阻塞直到重放结束,所以如果你需要在中途停掉的话,你可以在event handler里或者其它线程中调用Stop函数。 

replay.ReplayEvent += new ReplayEventHandler(ReplayHandler);
replay.Start();
traceFile.
Close();

  4、这里我们的ReplayHandler处理函数将对SPID进行过滤,所有SPID不是54的事件都将被忽略。代码中空的catch是为了避免某些event不含有SPID列会造成读取该列失败。 

private static void ReplayHandler(Object sender, ReplayEventArgs args)
{
    IDataRecordChanger recordChanger
= args.CurrentRecord;
    
int spid = 0;
    try
    {
        spid
= (int)recordChanger["SPID"];
    }
    catch { }
    
if (spid != 54)
        args.SkipRecord
= true;
}

  5、Replay的结果文件可以用Profiler工具打开查看,当然你仍然可以通过TraceFile打开,只要简单的调用InitializeAsReader然后循环调用Read即可,下面的代码将打出TextData列的内容。

TraceFile traceFileOutput = new TraceFile();
traceFileOutput.InitializeAsReader(@"c:\replayoutput.trc");
while (traceFileOutput.Read())
{
    Console.WriteLine(traceFileOutput
["TextData"]);
}
0
相关文章