筛选跟踪
筛选器将限制跟踪内收集的事件。如果未设置筛选器,则跟踪输出中将返回选定事件类的所有事件。例如,如果将跟踪中的 Windows 用户名限定为特定用户,将仅输出与那些用户相关的数据。
并不一定要为跟踪设置筛选器。但是,筛选器会将跟踪过程中的开销降到最低。筛选器将返回有针对性的数据,这样会使性能分析和审核变得更容易。
若要筛选跟踪中捕获的事件数据,请选择跟踪事件准则(仅返回跟踪中的相关数据)。例如,可以包括或排除监视跟踪中的特定应用程序的活动。
注意: |
---|
SQL Server Profiler 创建跟踪时,默认情况下,将筛选出自己的活动。 |
又如,如果监视查询以确定执行时间最长的批处理,请将跟踪事件准则设置为仅监视那些执行时间超过 30 秒的批处理(CPU 最小值为 30,000 毫秒)。
筛选器创建指南
通常,按照下列步骤筛选跟踪。
- 在跟踪中标识要包括的事件。
- 标识包含所需信息的数据和数据列。
- 标识所需数据的子集并基于该数据子集定义筛选器。
例如,您可能只对超过一定时间长度的事件感兴趣。您可以创建包括事件(其中 Duration 数据列超过 300 毫秒)的跟踪。跟踪将不包括在 300 毫秒内完成的事件。
您可以使用 SQL Server Profiler 或 Transact-SQL 存储过程创建筛选器。
在跟踪模板中筛选事件
如何在跟踪中筛选事件 (SQL Server Profiler)
修改筛选器
筛选器可用性取决于数据列。某些数据列无法筛选。可筛选的数据列只能使用部分关系运算符进行筛选,如下表所示。
关系运算符 | 运算符 | 说明 |
---|---|---|
类似于 |
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)
sp_link_publication (Transact-SQL)