SQL Server Profiler - 如何过滤跟踪以仅显示来自一个数据库的事件?

时间:2008-11-07 16:58:32

标签: sql-server profiler sqlprofiler

如何将SQL Server Profiler跟踪限制为特定数据库?我看不到如何过滤跟踪,看不到我连接的实例上所有数据库的事件。

5 个答案:

答案 0 :(得分:532)

在Trace属性>下“事件选择”选项卡>选择显示所有列。现在在列过滤器下,您应该看到数据库名称。输入Like部分的数据库名称,您应该只看到该数据库的跟踪。

答案 1 :(得分:38)

在SQL 2005中,首先需要在跟踪中显示“数据库名称”列。最简单的方法是选择已经添加了该列的Tuning模板。

假设您选择了Tuning模板,请过滤:

  • 点击“活动选择”标签
  • 点击“列过滤器”按钮
  • 检查显示所有列(右侧向下)
  • 选择“DatabaseName”,单击右侧窗格中“赞”旁边的加号,然后键入数据库名称。

我总是将跟踪保存到表中,所以我可以在事后对跟踪数据执行LIKE查询。

答案 2 :(得分:8)

通过实验,我能够观察到这一点:

当SQL Profiler 2005或SQL Profiler 2000与驻留在SQLServer 2000中的数据库一起使用时 - 问题提到的问题仍然存在,但是当SQL Profiler 2005与SQLServer 2005数据库一起使用时,它的工作正常完美!

总结一下,这个问题似乎在SQLServer 2000&在SQLServer 2005中进行了纠正。

处理SQLServer 2000时的问题解决方案是(正如wearejimbo所解释的)

  1. 通过查询sysdatabases表来识别要筛选的数据库的DatabaseID,如下所示

    SELECT * 
    FROM master..sysdatabases 
    WHERE name like '%your_db_name%'   -- Remove this line to see all databases
    ORDER BY dbid
    
  2. 在SQL事件探查器2000的“新建跟踪”窗口中使用DatabaseID过滤器(而不是DatabaseName)

答案 3 :(得分:4)

在“跟踪”属性中,单击常规旁边顶部的事件选择选项卡。然后单击右下角的列过滤器... 。然后,您可以选择要过滤的内容,例如TextDataDatabaseName

展开节点,然后输入包含%%MyDatabaseName%%TextDataToFilter%个百分号的过滤器。没有%%标志,过滤器将无效。

另外,请务必选中复选框排除不包含值的行<&em; 如果找不到要查看的字段,请{} {}}转到< em>常规标签并更改模板,空白应包含所有字段。

答案 4 :(得分:1)

创建一个新模板并检查DBname。将该模板用于跟踪文件。