Sql-Server

如何在 SQL Profiler 中為列過濾器使用 OR

  • October 14, 2017

我正在設置一個 SQL Profiler,我想讓它過濾任何持續時間 > 30000 或 CPU > 10000 或寫入 > 1000 的項目

如果我將它們放入“列過濾器”區域,它似乎是一個 AND(即,我只在持續時間、cpu 和寫入超過這些限制時才獲得項目)。

有沒有辦法讓它們成為 OR 以便我得到任何符合這些標準的任何項目?我知道我可以啟動三個不同的分析器,每個分析器都有特定的標準,但是將所有這些都放在一個視窗/輸出中會很好。

我目前使用的是 SQL 2008 R2,但希望對這個項目有一個一般性的答案。

**你不能。**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>]

參考:探查器 (Microsoft Docs)

腳步

  1. 您將為標準分析創建一個模板並在命令行啟動中使用它
  2. 通過引用模板的命令行啟動 SQL Profiler
  3. 查詢儲存在表中的數據

備擇方案

鑑於您可能正在考慮在不久的將來進行遷移,並且由於 Microsoft 提到的 SQL Server Profiler 已經過時,您可以考慮通過查看擴展事件來更新您的技能。

重要的!!

我們宣布棄用 SQL Server Profiler for Database Engine Trace Capture 和 Trace Replay。這些功能在 SQL Server 2016 中可用,但將在更高版本中刪除。+ 包含 Microsoft SQL Server Trace 和 Replay 對象的 Microsoft.SqlServer.Management.Trace 命名空間也將被棄用。

參考:SQL Server Profiler (Microsoft Docs)

擴展活動

Extended Events 是一個輕量級的性能監控系統,使用很少的性能資源。儘管有一個小缺點,即 SQL Server 2008 沒有 GUI(好吧,有一個 SSMS 外掛,可以在codeplex上找到。)

可以在Microsoft 的網站上找到有關擴展事件的介紹。

引用自:https://dba.stackexchange.com/questions/180076