Mar*_*ith 7 sql-server-2005 sql-server-2008 profiler
我有大量用于不同级别诊断的脚本化跟踪定义,其中没有一个是按 HostName 过滤的。我今天需要按主机过滤流量,因此:
在 SSMS 中打开文件,没有过滤器的迹象。冲洗,重复,再次相同。假设我正在做一些愚蠢的事情,我查找要使用的值(比它应该更难找到!)并手动添加到我的跟踪定义中,这有效。
EXEC sp_trace_setfilter @TraceId, 8, 0, 6, N'MyHostName'
Run Code Online (Sandbox Code Playgroud)
回来检查为什么我无法从 Profiler 中获得相同的结果。我发现在从 SSMS 编写 2000 年的脚本跟踪时提到这是一个问题,但没有提到 SSMS2005/2008 到 2005/2008 服务器的这种情况。这是 Profiler 中的错误吗?
小智 6
在 Profiler 2005 中生成脚本时,为逻辑运算符保存的默认值为 1='OR',因此跟踪将捕获比我们最初预期的更多的信息。
exec sp_trace_setfilter @TraceID, 8, 1, 0, N'HOSTNAME1' -- OR
exec sp_trace_setfilter @TraceID, 8, 1, 0, N'HOSTNAME2'
exec sp_trace_setfilter @TraceID, 8, 1, 0, N'HOSTNAME3'
set @bigintfilter = 10 -- reads >= 10
exec sp_trace_setfilter @TraceID, 16, 0, 4, @bigintfilter -- AND
exec sp_trace_setfilter @TraceID, 35, 1, 6, N'DB' -- OR
Run Code Online (Sandbox Code Playgroud)
在 Profiler >=2008 中,脚本为第一次出现要过滤的列提供 0(AND)。
exec sp_trace_setfilter @TraceID, 8, 0, 0, N'HOSTNAME1' -- AND
exec sp_trace_setfilter @TraceID, 8, 1, 0, N'HOSTNAME2'
exec sp_trace_setfilter @TraceID, 8, 1, 0, N'HOSTNAME3'
exec sp_trace_setfilter @TraceID, 35,0, 6, N'DB' -- AND
set @bigintfilter = 10 -- reads
exec sp_trace_setfilter @TraceID, 16, 0, 4, @bigintfilter -- AND
Run Code Online (Sandbox Code Playgroud)
这看起来像是 Profiler 2005 中的一个错误。
归档时间: |
|
查看次数: |
4002 次 |
最近记录: |