筛选跟踪

筛选器将限制跟踪内收集的事件。 如果没有设置筛选器,跟踪输出中将返回选定事件类的所有事件。 例如,如果将跟踪中的 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)

筛选器可用性取决于数据列。 某些数据列无法筛选。 可筛选的数据列只能使用部分关系运算符进行筛选,如下表所示。

关系运算符

运算符

说明

类似于

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

TextData 1

LIKE、NOT LIKE

TransactionID

=, <>, >=, <=

类型

=, <>, >=, <=

Writes

=, <>, >=, <=

XactSequence

=, <>, >=, <=

1 如果从 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)