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


Answers:


574

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


8
我不知道这是否是一个常见问题,但是当我运行事件探查器时,对于我跟踪的许多值,数据库名称都是空白的。我必须使用DatabaseID列并通过查询主数据库中的sysdatabases表来找到要输入的正确值
Jim Birchall,

34
要查找DatabaseID:从[master]。[dbo]中选择[name],[dbid]。[sysdatabases] ORDER BY [name]
Simon

1
还取决于您选择的模板(如果有)。+1
美好的2012年

2
并且您必须before开始跟踪。如果您在之后进行操作-该字段将不可编辑!
DarkWalker 2014年

2
不要忘记停止跟踪或在运行之前开始。
Fery

42

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

假设您已选择“调整模板”以进行过滤:

  • 单击“事件选择”选项卡
  • 点击“列过滤器”按钮
  • 选中显示所有列(右侧朝下)
  • 选择“数据库名称”,单击右侧窗格中“喜欢”旁边的加号,然后键入数据库名称。

我也总是将跟踪保存到表中,因此事后我可以对跟踪数据进行LIKE查询。


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 Profiler 2000的“新建跟踪”窗口中使用DatabaseID筛选器(而不是DatabaseName)


4

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

展开“ Like”节点,然后输入带有%诸如%MyDatabaseName%或的百分号的过滤器%TextDataToFilter%。没有%%迹象,过滤器将无法工作。

另外,请确保选中“ 排除不包含值的行 ”复选框如果找不到要过滤的字段,例如DatabaseName转到“ 常规”选项卡并更改“ 模板”,则空白应包含所有字段。


1

创建一个新模板并检查DBname。使用该模板作为跟踪文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.