次の方法で共有


トレースにフィルターを適用する

適用対象: SQL Server

フィルターを使用すると、トレースに出力するイベントを制限することができます。 フィルターが設定されていない場合は、選択したイベント クラスのすべてのイベントがトレースに出力されます。 たとえば、トレースに出力する Windows ユーザーとして特定のユーザー名を指定すると、それらのユーザーのデータのみが出力されます。

トレースのフィルター設定は必須ではありません。 ただし、フィルターを設定すると、トレース中に発生するオーバーヘッドを低減できます。 フィルターによって、データを絞り込むことができ、パフォーマンス分析および監査が簡略化されます。

トレースに出力するイベント データを制限するには、必要なデータだけがトレースに記録されるようにイベントのトレース条件を選択します。 たとえば、特定のアプリケーションの動作状況をトレースの対象としたり、トレースから除外したりできます。

Note

SQL Server Profilerがトレースを作成する際、既定では、この Profiler 自身の動作状況はトレースから除外されます。

たとえば、クエリを監視して、実行に長時間かかるバッチを調べる場合、イベントのトレース条件を設定することで、実行時間が 30 秒を超えるバッチだけを監視できます (CPU 時間の最小値は 30,000 ミリ秒です)。

フィルター作成のガイドライン

トレースにフィルターを適用するには、次の手順を実行します。

  1. トレースの対象とするイベントを決めます。
  2. 必要な情報を保存するデータおよびデータ列を決めます。
  3. 必要なデータのサブセットを決め、そのデータのサブセットに基づいてフィルターを設定します。

たとえば、ある一定の時間よりも長くかかるイベントをトレースで出力するとします。 その場合、Duration データ列が 300 ミリ秒以上かかるイベントを出力するトレースを作成できます。 300 ミリ秒以内に完了したイベントはトレースから除外されます。

フィルターは、SQL Server Profiler または Transact-SQL ストアド プロシージャを使用して作成できます。

トレース テンプレートを使用してイベントにフィルターを適用する

フィルターを変更する

フィルターを適用できるかどうかは、データ列によって異なります。 一部のデータ列にはフィルターを適用できません。 フィルターの適用が可能なデータ列では、次の表に示す関係演算子を使用してフィルターを指定できます。

関係演算子 演算子記号 説明
Like LIKE イベントのトレース データが入力したテキストと同じでなければならないことを指定します。 複数の値を指定できます。
一致しない NOT LIKE イベントのトレース データが入力したテキストと同じであってはならないことを指定します。 複数の値を指定できます。
[等しい] = イベントのトレース データが入力した値と等しくなければならないことを指定します。 複数の値を指定できます。
等しくない <> イベントのトレース データが入力した値と等しくあってはならないことを指定します。 複数の値を指定できます。
より大きい > イベントのトレース データが入力した値よりも大きくなければならないことを指定します。
次の値以上 >= イベントのトレース データが入力した値以上でなければならないことを指定します。
より小さい < イベントのトレース データが入力した値よりも小さくなければならないことを指定します。
次の値以下 <= イベントのトレース データが入力した値以下でなければならないことを指定します。

次の表は、フィルターを適用できるデータ列と利用可能な関係演算子の一覧です。

データ列 リレーショナル演算子
ApplicationName $
BigintData1
BigintData2
BinaryData SQL Server Profiler を使用して、このデータ列のイベントをフィルタリングします。 詳細については、「SQL Server プロファイラーでトレースにフィルターを適用する」を参照してください。
ClientProcessID
ColumnPermissions
CPU
DatabaseID
DatabaseName $
DBUserName $
Duration
EndTime $
Error
EventSubClass
FileName $
GUID SQL Server Profiler を使用して、このデータ列のイベントをフィルタリングします。 詳細については、「SQL Server プロファイラーでトレースにフィルターを適用する」を参照してください。
Handle
HostName $
IndexID
IntegerData
IntegerData2
IsSystem
LineNumber
LinkedServerName $
LoginName $
LoginSid SQL Server Profiler を使用して、このデータ列のイベントをフィルタリングします。 詳細については、「SQL Server プロファイラーでトレースにフィルターを適用する」を参照してください。
MethodName $
Mode
NestLevel
NTDomainName $
NTUserName $
ObjectID
ObjectID2
ObjectName $
ObjectType
Offset
OwnerID
OwnerName $
ParentName $
Permissions
ProviderName $
Reads
RequestID
RoleName $
RowCounts
SessionLoginName $
Severity
SourceDatabaseID
SPID
SqlHandle SQL Server Profiler を使用して、このデータ列のイベントをフィルタリングします。 詳細については、「SQL Server プロファイラーでトレースにフィルターを適用する」を参照してください。
StartTime <==
State
Success
TargetLoginName $
TargetLoginSid SQL Server Profiler を使用して、このデータ列のイベントをフィルタリングします。 詳細については、「SQL Server プロファイラーでトレースにフィルターを適用する」を参照してください。
TargetUserName $
TextData 1 $
TransactionID
Type
Writes
XactSequence

1 osql ユーティリティまたは sqlcmd ユーティリティからイベントをトレースしている場合は必ず、%TextData データ列のフィルターに付加します。

セキュリティ対策として、SQL トレースは、パスワードに影響を与えるセキュリティ関連ストアド プロシージャの情報をトレースの対象から自動的に除外します。 このセキュリティ メカニズムは変更不可能で、常に有効な状態になっています。 これにより、 SQL Server上でのすべての動作状況をトレースする権限を持たないユーザーがパスワードを取得するのを防ぎます。

監視されるのは次のセキュリティ関連ストアド プロシージャですが、TextData データ列には出力されません。