篩選追蹤

適用於:SQL Server

篩選可限制追蹤中收集的事件。 如果沒有設定篩選條件,選定事件類別的所有事件都會傳回到追蹤輸出。 例如,限制追蹤裡的 Windows 使用者名稱為特定使用者,可將輸出資料縮小為只有這些使用者。

替追蹤設定篩選並非強制的。 不過,篩選可以讓追蹤期間造成的負擔降到最低。 篩選會傳回特別關注的資料,而讓效能分析和稽核都變得比較容易。

若要篩選追蹤內擷取的事件資料,請選取追蹤事件條件,以便只傳回追蹤裡的相關資料。 例如,您可以從追蹤包含或排除監視特定應用程式的活動。

注意

當 SQL Server Profiler 建立追蹤時,預設會篩選出它自己的活動。

舉個額外的例子說明,如果您要監視查詢以判斷花費最長時間執行的批次,可將追蹤事件條件設定為只監視花費超過 30 秒鐘執行的批次 (亦即 CPU 最小值 30,000 毫秒)。

篩選建立指導方針

一般而言,可依照下列步驟篩選追蹤。

  1. 識別您要在追蹤內包含的事件。

  2. 識別包含所需資訊的資料與資料行。

  3. 識別所需資料的子集,並且根據資料子集定義篩選。

例如,您可能只對花費超過某個長度時間的事件有興趣。 可以建立一個包含事件的追蹤,其中 Duration 資料行是大於 300 毫秒。 您的追蹤將不會包含 300 毫秒內完成的事件。

您可以使用 SQL Server Profiler 或 Transact-SQL 預存程序來建立篩選。

若要篩選追蹤範本中的事件

篩選追蹤中的事件 (SQL Server Profiler)

設定追蹤篩選 (Transact-SQL)

若要修改篩選

修改篩選 (SQL Server Profiler)

篩選的可用性視資料行而定。 部份資料行無法篩選。 可篩選的資料行只能由特定關聯式運算子進行篩選,如下表所示。

關聯式運算子 運算子符號 Description
相似 LIKE 指定追蹤事件資料必須和輸入的文字相似。 允許多值。
不相似 不相似 指定追蹤事件資料絕對必須和輸入的文字不相似。 允許多值。
Equals = 指定追蹤事件資料必須和輸入的值相等。 允許多值。
不等於 <> 指定追蹤事件資料絕對必須和輸入的值不相等。 允許多值。
大於 > 指定追蹤事件資料必須大於輸入的值。
大於或等於 >= 指定追蹤事件資料必須大於或等於輸入的值。
小於 < 指定追蹤事件資料必須小於輸入的值。
小於或等於 <= 指定追蹤事件資料必須小於或等於輸入的值。

下表列出可篩選的資料行與可用的關聯式運算子。

資料行 關聯式運算子
ApplicationName LIKE、NOT LIKE
BigintData1 =、<>、>=、<=
BigintData2 =、<>、>=、<=
BinaryData 使用 SQL Server Profiler 來篩選此資料行中的事件。 如需詳細資訊,請參閱 使用 SQL Server Profiler 篩選追蹤
ClientProcessID =、<>、>=、<=
ColumnPermissions =、<>、>=、<=
CPU =、<>、>=、<=
DatabaseID =、<>、>=、<=
DatabaseName LIKE、NOT LIKE
DBUserName LIKE、NOT LIKE
有效期間 =、<>、>=、<=
EndTime >=、<=
錯誤 =、<>、>=、<=
EventSubClass =、<>、>=、<=
FileName LIKE、NOT LIKE
GUID 使用 SQL Server Profiler 來篩選此資料行中的事件。 如需詳細資訊,請參閱 使用 SQL Server Profiler 篩選追蹤
Handle =、<>、>=、<=
HostName LIKE、NOT LIKE
IndexID =、<>、>=、<=
IntegerData =、<>、>=、<=
IntegerData2 =、<>、>=、<=
IsSystem =、<>、>=、<=
LineNumber =、<>、>=、<=
LinkedServerName LIKE、NOT LIKE
LoginName LIKE、NOT LIKE
LoginSid 使用 SQL Server Profiler 來篩選此資料行中的事件。 如需詳細資訊,請參閱 使用 SQL Server Profiler 篩選追蹤
MethodName LIKE、NOT LIKE
Mode =、<>、>=、<=
NestLevel =、<>、>=、<=
NTDomainName LIKE、NOT LIKE
NTUserName LIKE、NOT LIKE
Exchange Spill =、<>、>=、<=
ObjectID2 =、<>、>=、<=
ObjectName LIKE、NOT LIKE
ObjectType =、<>、>=、<=
Offset =、<>、>=、<=
OwnerID =、<>、>=、<=
OwnerName LIKE、NOT LIKE
ParentName LIKE、NOT LIKE
權限 =、<>、>=、<=
ProviderName LIKE、NOT LIKE
Reads =、<>、>=、<=
RequestID =、<>、>=、<=
RoleName LIKE、NOT LIKE
RowCounts =、<>、>=、<=
SessionLoginName LIKE、NOT LIKE
嚴重性 =、<>、>=、<=
SourceDatabaseID =、<>、>=、<=
SPID =、<>、>=、<=
SqlHandle 使用 SQL Server Profiler 來篩選此資料行中的事件。 如需詳細資訊,請參閱 使用 SQL Server Profiler 篩選追蹤
StartTime >=、<=
State =、<>、>=、<=
「成功」 =、<>、>=、<=
TargetLoginName LIKE、NOT LIKE
TargetLoginSid 使用 SQL Server Profiler 來篩選此資料行中的事件。 如需詳細資訊,請參閱 使用 SQL Server Profiler 篩選追蹤
TargetUserName LIKE、NOT LIKE
TextData * LIKE、NOT LIKE
TransactionID =、<>、>=、<=
類型 =、<>、>=、<=
Writes =、<>、>=、<=
XactSequence =、<>、>=、<=

* 如果從 osql 公用程式或 sqlcmd 公用程式追蹤事件,篩選 TextData 資料行時一律附加 %

基於安全機制,「SQL 追蹤」會自動把任何與安全性相關、會影響密碼的預存程序的資訊從追蹤省略。 此安全機制無法設定,也永遠有效。 如此可預防有權限追蹤 SQL Server 上所有活動的使用者擷取到密碼。

下列與安全性相關的預存程序會受到監視,但是不會將輸出寫入 TextData 資料行:

sp_addapprole (Transact-SQL)

sp_adddistpublisher (Transact-SQL)

sp_adddistributiondb (Transact-SQL)

sp_adddistributor (Transact-SQL)

sp_addlinkedserver (Transact-SQL)

sp_addlinkedsrvlogin (Transact-SQL)

sp_addlogin (Transact-SQL)

sp_addmergepullsubscription_agent (Transact-SQL)

sp_addpullsubscription_agent (Transact-SQL)

sp_addremotelogin (Transact-SQL)

sp_addsubscriber (Transact-SQL)

sp_approlepassword (Transact-SQL)

sp_changedistpublisher (Transact-SQL)

sp_changesubscriber (Transact-SQL)

sp_dsninfo (Transact-SQL)

sp_helpsubscription_properties (Transact-SQL)

sp_link_publication (Transact-SQL)

sp_password (Transact-SQL)

sp_setapprole (Transact-SQL)