如何将 SQL Server Profiler 跟踪限制到特定数据库?我看不到如何过滤跟踪以看不到我连接到的实例上所有数据库的事件。
5 回答
在跟踪属性 > 事件选择选项卡 > 选择显示所有列。现在在列过滤器下,您应该会看到数据库名称。输入 Like 部分的数据库名称,您应该只看到该数据库的跟踪。
在 SQL 2005 中,您首先需要在跟踪中显示数据库名称列。最简单的做法是选择已经添加了该列的 Tuning 模板。
假设您选择了 Tuning 模板,以进行过滤:
- 单击“事件选择”选项卡
- 单击“列过滤器”按钮
- 选中显示所有列(右侧向下)
- 选择“DatabaseName”,单击右侧窗格中 Like 旁边的加号,然后键入您的数据库名称。
我也总是将跟踪保存到一个表中,这样我就可以在事后对跟踪数据进行 LIKE 查询。
通过实验,我能够观察到这一点:
当 SQL Profiler 2005 或 SQL Profiler 2000 与驻留在 SQLServer 2000 中的数据库一起使用时 - 提到的问题仍然存在,但是当 SQL Profiler 2005 与 SQLServer 2005 数据库一起使用时,它可以完美运行!
总之,这个问题似乎在 SQLServer 2000 中很普遍,并在 SQLServer 2005 中得到纠正。
处理 SQLServer 2000 时问题的解决方案是(正如 wearejimbo 所解释的)
通过查询 sysdatabases 表来确定要过滤的数据库的 DatabaseID,如下所示
SELECT * FROM master..sysdatabases WHERE name like '%your_db_name%' -- Remove this line to see all databases ORDER BY dbid
在 SQL Profiler 2000 的 New Trace 窗口中使用 DatabaseID 过滤器(而不是 DatabaseName)
在 Trace 属性中,单击General旁边顶部的Events Selection选项卡。然后单击右下角的列过滤器...。然后,您可以选择要过滤的内容,例如或。TextData
DatabaseName
展开Like节点并使用百分号%
(如%MyDatabaseName%
或)输入过滤器%TextDataToFilter%
。没有%%
标志,过滤器将无法工作。
此外,请确保选中复选框排除不包含值的行'如果找不到要过滤的字段,例如DatabaseName
转到常规选项卡并更改模板,则空白应包含所有字段。
创建一个新模板并检查 DBname。为您的跟踪文件使用该模板。