技术开发 频道

使用TMO监测和诊断SQL Server

  在这篇文章中我们将介绍一个replay trace的示例,通过重放抓到的trace文件来诊断应用程序在SQL Server上运行是否有问题。

  Replay trace示例

  这个例子模仿你使用Profiler工具对抓到的trace文件进行重放,从而对SQL Server及你的应用程序进行诊断的过程。下面是详细的步骤和描述。

  1、TraceReplay类是对trace file或trace table进行重放的关键类,你需要设置TraceReplay的三个属性,Connection属性代表你将在哪个数据库实例上进行重放,Source属性代表重放哪个文件或数据表,OutputFile代表重放的结果将输出到哪个文件,你也可以使用OutputTable属性指定将重放结果输出到数据表中。

  下面的代码将使用capture trace例子里抓到的trace file作为重放的输入并将结果存为traceoutput.trc文件。

TraceReplay replay = new TraceReplay();
SqlConnectionInfo connInfo
= new SqlConnectionInfo(".");
connInfo.UseIntegratedSecurity
= true;
replay.Connection
= connInfo;
TraceFile traceFile
= new TraceFile();
traceFile.InitializeAsReader(@"c:\tracefile.trc");
replay.Source
= traceFile;
TraceFile traceFileOutput
= new TraceFile();
traceFileOutput.InitializeAsReplayOutputWriter(@"c:\replayoutput.trc");
replay.OutputFile
= traceFileOutput;

  2、TraceReplay类还有个比较重要的属性Options,你可以通过设置Options属性来控制如何重放。Options属性是个TraceReplayOptions对象,Profiler工具中重放配置对话框上的很多配置项都可以通过Options属性来设置。

  下面的代码中设置了3个属性,Mode设置重放模式为连接层面上同步(另一个模式为SequentialReplay,指在所有连接上完全同步),NumberOfReplayThreads设置重放的线程数为2,KeepResults将控制在重放结果文件中是否出现SQL等的执行结果,比如你的trace里有select 1语句,那设置KeepResults为false将避免在结果文件中出现select 1返回的result set。

replay.Options.Mode = ReplayMode.ConnectionLevelSync;
replay.Options.NumberOfReplayThreads
= 2;
replay.Options.KeepResults
= false;
0
相关文章