如何在 SQL Profiler 中為列過濾器使用 OR
我正在設置一個 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>]
腳步
- 您將為標準分析創建一個模板並在命令行啟動中使用它
- 通過引用模板的命令行啟動 SQL Profiler
- 查詢儲存在表中的數據
備擇方案
鑑於您可能正在考慮在不久的將來進行遷移,並且由於 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 的網站上找到有關擴展事件的介紹。