篩選追蹤
篩選可限制追蹤中收集的事件。如果沒有設定篩選條件,選定事件類別的所有事件都會傳回到追蹤輸出。例如,限制追蹤裡的 Windows 使用者名稱為特定使用者,可將輸出資料縮小為只有這些使用者。
替追蹤設定篩選並非強制的。不過,篩選可以讓追蹤期間造成的負擔降到最低。篩選會傳回特別關注的資料,而讓效能分析和稽核都變得比較容易。
若要篩選追蹤內擷取的事件資料,請選取追蹤事件條件,以便只傳回追蹤裡的相關資料。例如,您可以從追蹤包含或排除監視特定應用程式的活動。
[!附註]
當 SQL Server Profiler 建立追蹤時,預設會篩選出它自己的活動。
舉個額外的例子說明,如果您要監視查詢以判斷花費最長時間執行的批次,可將追蹤事件條件設定為只監視花費超過 30 秒鐘執行的批次 (亦即 CPU 最小值 30,000 毫秒)。
篩選建立指導方針
一般而言,可依照下列步驟篩選追蹤。
識別您要在追蹤內包含的事件。
識別包含所需資訊的資料與資料行。
識別所需資料的子集,並且根據資料子集定義篩選。
例如,您可能只對花費超過某個長度時間的事件有興趣。可以建立一個包含事件的追蹤,其中 Duration 資料行是大於 300 毫秒。您的追蹤將不會包含 300 毫秒內完成的事件。
您可以使用 SQL Server Profiler 或 Transact-SQL 預存程序來建立篩選。
若要篩選追蹤範本中的事件
若要修改篩選
篩選的可用性視資料行而定。部份資料行無法篩選。可篩選的資料行只能由特定關聯式運算子進行篩選,如下表所示。
關聯式運算子 |
運算子符號 |
描述 |
---|---|---|
相似 |
LIKE |
指定追蹤事件資料必須和輸入的文字相似。允許多值。 |
不相似 |
NOT LIKE |
指定追蹤事件資料絕對必須和輸入的文字不相似。允許多值。 |
等於 |
= |
指定追蹤事件資料必須和輸入的值相等。允許多值。 |
不等於 |
<> |
指定追蹤事件資料絕對必須和輸入的值不相等。允許多值。 |
大於 |
> |
指定追蹤事件資料必須大於輸入的值。 |
大於或等於 |
>= |
指定追蹤事件資料必須大於或等於輸入的值。 |
小於 |
< |
指定追蹤事件資料必須小於輸入的值。 |
小於或等於 |
<= |
指定追蹤事件資料必須小於或等於輸入的值。 |
下表列出可篩選的資料行與可用的關聯式運算子。
資料行 |
關聯式運算子 |
---|---|
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 |
Duration |
=, <>, >=, <= |
EndTime |
>=, <= |
Error |
=, <>, >=, <= |
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 |
ObjectID |
=, <>, >=, <= |
ObjectID2 |
=, <>, >=, <= |
ObjectName |
LIKE、NOT LIKE |
ObjectType |
=, <>, >=, <= |
Offset |
=, <>, >=, <= |
OwnerID |
=, <>, >=, <= |
OwnerName |
LIKE、NOT LIKE |
ParentName |
LIKE、NOT LIKE |
Permissions |
=, <>, >=, <= |
ProviderName |
LIKE、NOT LIKE |
Reads |
=, <>, >=, <= |
RequestID |
=, <>, >=, <= |
RoleName |
LIKE、NOT LIKE |
RowCounts |
=, <>, >=, <= |
SessionLoginName |
LIKE、NOT LIKE |
Severity |
=, <>, >=, <= |
SourceDatabaseID |
=, <>, >=, <= |
SPID |
=, <>, >=, <= |
SqlHandle |
使用 SQL Server Profiler 篩選這個資料行中的事件。如需詳細資訊,請參閱<使用 SQL Server Profiler 篩選追蹤>。 |
StartTime |
>=, <= |
State |
=, <>, >=, <= |
Success |
=, <>, >=, <= |
TargetLoginName |
LIKE、NOT LIKE |
TargetLoginSid |
使用 SQL Server Profiler 篩選這個資料行中的事件。如需詳細資訊,請參閱<使用 SQL Server Profiler 篩選追蹤>。 |
TargetUserName |
LIKE、NOT LIKE |
TextData1 |
LIKE、NOT LIKE |
TransactionID |
=, <>, >=, <= |
Type |
=, <>, >=, <= |
Writes |
=, <>, >=, <= |
XactSequence |
=, <>, >=, <= |
1 如果從 osql 公用程式或 sqlcmd 公用程式追蹤事件,對 TextData 資料行篩選時會附加 %。
基於安全機制,「SQL 追蹤」會自動把任何與安全性相關、會影響密碼的預存程序的資訊從追蹤省略。此安全機制無法設定,也永遠有效。如此可預防有權限追蹤 SQL Server 上所有活動的使用者擷取到密碼。
下列與安全性相關的預存程序會受到監視,但是不會將輸出寫入 TextData 資料行:
sp_adddistpublisher (Transact-SQL)
sp_adddistributiondb (Transact-SQL)
sp_adddistributor (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_addlinkedsrvlogin (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_helpsubscription_properties (Transact-SQL)