SQL Server事件探查器 – 如何过滤跟踪只显示来自一个数据库的事件?

如何限制SQL Server Profiler跟踪到特定的数据库? 我无法看到如何筛选跟踪,以查看我连接的实例上的所有数据库的事件。

在跟踪属性>事件select选项卡>select显示所有列。 现在在列filter下,您应该看到数据库名称。 inputLike部分的数据库名称,只能看到该数据库的跟踪。

在SQL 2005中,首先需要在跟踪中显示数据库名称列。 最简单的做法是select调整模板,该模板已经添加了该列。

假设您select了Tuning模板,要筛选:

  • 点击“事件select”标签
  • 点击“列filter”button
  • 选中显示所有列(右下)
  • select“DatabaseName”,单击右侧窗格中Like的旁边的加号,然后键入数据库名称。

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

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

当SQL Profiler 2005或SQL Profiler 2000与SQLServer 2000中的数据库一起使用时 – 所提到的问题仍然存在,但是当SQL Profiler 2005与SQLServer 2005数据库一起使用时,它是完美的!

总之,这个问题似乎在SQLServer 2000中普遍存在,并在SQLServer 2005中纠正。

处理SQLServer 2000时的问题的解决scheme是(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的“新build跟踪”窗口中使用DatabaseID筛选器(而不是DatabaseName)

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

展开Like节点并使用百分号%符号(如%MyDatabaseName%%TextDataToFilter%input您的filter。 如果没有%%符号,filter将无法工作。

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

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

    Interesting Posts