如何在 SQL Profiler 中为列过滤器使用 OR

Chr*_*Dog 5 sql-server profiler sql-server-2008-r2

我正在设置一个 SQL Profiler,我想让它过滤持续时间 > 30000 OR CPU > 10000 OR Writes > 1000 的任何项目

似乎如果我将它们放入“列过滤器”区域,它是一个 AND(即我只在持续时间、cpu 和写入超过这些限制时获取项目)。

有没有办法让这些成为 OR 以便我获得符合其中任何一个标准的任何项目?我知道我可以启动三个不同的分析器,每个分析器都有特定的标准,但最好将所有这些都放在一个窗口/输出中。

我目前在使用 SQL 2008 R2,但希望对这个项目有一个通用的答案。

Joh*_* N. 5

你不能。SQL Server Profiler 在显示和过滤数据的方式上有一些限制。

解决方案

您最好将跟踪的数据存储到同一服务器上的单独表中,然后以给定的时间间隔查询数据。最大的好处是您拥有表中的数据并且可以执行SELECT您希望的任何复杂语句。通过指定一两个过滤条件,确保您不会捕获太多数据。

您还可以考虑从命令提示符运行 SQL Server Profiler,这将减少在界面中不断显示数据的开销。

参数是:

---------------------------
SQL Server Profiler
---------------------------
Usage: PROFILER.EXE
    [/S<SQL Server instance name>]
    [/A]<Analysis Services instance name>
    [/D<database>]
    [/B<trace table to load>]
    [/E] trusted connection
    [/U<login id>]
    [/P<password>]
    [/F<trace file to load>]
    [/T<template file to load or use when starting a new trace>]
    [/L<locale id>]
    [/M<trace stop time>]
    [/O<trace output file name>]
    [/Z<maximum output file size (MB)>]
    [/R<use rollover files>]
Run Code Online (Sandbox Code Playgroud)

参考:探查器 (Microsoft Docs)

脚步

  1. 您将为标准分析创建一个模板,并在命令行启动时使用它
  2. 通过命令行引用您的模板启动 SQL Profiler
  3. 查询表中存储的数据

备择方案

鉴于您可能会在不久的将来考虑迁移,并且由于 Microsoft 提到的 SQL Server Profiler 已经过时,您可以考虑通过查看扩展事件来更新您的技能。

重要的!!
我们宣布弃用用于数据库引擎跟踪捕获和跟踪重放的 SQL Server Profiler。这些功能在 SQL Server 2016 中可用,但将在更高版本中删除。+ 包含 Microsoft SQL Server 跟踪和重播对象的 Microsoft.SqlServer.Management.Trace 命名空间也将被弃用。

参考:SQL Server Profiler (Microsoft Docs)

扩展事件

Extended Events 是一个轻量级的性能监控系统,它使用的性能资源非常少。尽管有一个小缺点,SQL Server 2008 没有 GUI(好吧,SSMS 有一个附加组件,可以在codeplex上找到。)

可以在Microsoft 的站点上找到对扩展事件的介绍。