SQL トレース (SQL Trace)SQL Trace

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

SQL トレースでは、トレース定義に一覧表示されているイベント クラスのインスタンスであるイベントが収集されます。In SQL Trace, events are gathered if they are instances of event classes listed in the trace definition. このようなイベントは、フィルターによってトレースから除外したり、対象のキューに登録したりすることができます。These events can be filtered out of the trace or queued for their destination. イベントの対象には、ファイルまたは SQL ServerSQL Server 管理オブジェクト (SMO) を指定できます。SMO では、 SQL ServerSQL Serverを管理するアプリケーションでトレース情報を使用できます。The destination can be a file or SQL ServerSQL Server Management Objects (SMO), which can use the trace information in applications that manage SQL ServerSQL Server.


SQL トレースと SQL Server プロファイラーSQL Server Profiler は、非推奨です。SQL Trace and SQL Server プロファイラーSQL Server Profiler are deprecated. Microsoft SQL Server の Trace や Replay オブジェクトを含む Microsoft.SqlServer.Management.Trace 名前空間も非推奨とされます。The Microsoft.SqlServer.Management.Trace namespace that contains the Microsoft SQL Server Trace and Replay objects are also deprecated.

この機能はメンテナンス モードであり、Microsoft SQL Server の将来のバージョンで削除される可能性があります。This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

代わりに拡張イベントを使用します。Use Extended Events instead. 拡張イベントについて詳しくは、「クイック スタート:SQL Server 拡張イベント」および SSMS XEvent Profiler に関するページをご覧ください。For more information on Extended Events, see Quick Start: Extended events in SQL Server and SSMS XEvent Profiler.

SQL トレースの利点Benefits of SQL Trace

Microsoft SQL ServerSQL Server には、 Transact-SQLTransact-SQL のインスタンスでトレースを作成するための SQL Server データベース エンジンSQL Server Database Engineシステム ストアド プロシージャが用意されています。Microsoft SQL ServerSQL Server provides Transact-SQLTransact-SQL system stored procedures to create traces on an instance of the SQL Server データベース エンジンSQL Server Database Engine. これらのシステム ストアド プロシージャを使用して、 SQL Server プロファイラーSQL Server Profilerからではなく、ユーザー独自のアプリケーションからトレースを手動で作成することもできます。These system stored procedures can be used from within your own applications to create traces manually, instead of using SQL Server プロファイラーSQL Server Profiler. これにより、企業のニーズに合わせたカスタム アプリケーションを作成できます。This allows you to write custom applications specific to the needs of your enterprise.

SQL トレース アーキテクチャSQL Trace Architecture

イベント ソースには、 Transact-SQLTransact-SQL バッチなどのトレース イベントやデッドロックなどの SQL ServerSQL Server イベントを生成する任意のソースを指定できます。Event Sources can be any source that produces the trace event, such as Transact-SQLTransact-SQL batches or SQL ServerSQL Server events, such as deadlocks. イベントの詳細については、「 SQL Server イベント クラスの参照」を参照してください。For more information about events, see SQL Server Event Class Reference. イベントの発生後、イベント クラスがトレース定義に含まれている場合は、トレースによってイベント情報が収集されます。After an event occurs, if the event class has been included in a trace definition, the event information is gathered by the trace. トレース定義に含まれているイベント クラスに対してフィルターが定義されている場合は、フィルターが適用され、トレース イベント情報がキューに渡されます。If filters have been defined for the event class in the trace definition, the filters are applied and the trace event information is passed to a queue. キューに登録されたトレース情報は、ファイルに書き込まれるか、または SQL Server プロファイラーSQL Server Profilerなどのアプリケーションで SMO によって使用されます。From the queue, the trace information is either written to a file or can be used by SMO in applications, such as SQL Server プロファイラーSQL Server Profiler. 次の図は、トレース中に SQL トレースによってどのようにイベントが収集されるかを示しています。The following diagram shows how SQL Trace gathers events during a tracing.

データベース エンジンのイベント追跡処理Database Engine event tracing process

SQL トレースの用語SQL Trace Terminology

次の用語は SQL トレースの主要な概念を示したものです。The following terms describe the key concepts of SQL Trace.

MicrosoftMicrosoft SQL Server データベース エンジンSQL Server Database Engine のインスタンス内での操作により発生します。The occurrence of an action within an instance of the MicrosoftMicrosoft SQL Server データベース エンジンSQL Server Database Engine.

データ列Data column
イベントの属性。An attribute of an event.

イベント クラスEvent class
トレースできるイベントの種類。A type of event that can be traced. イベント クラスには、イベントから報告できるすべてのデータ列が含まれています。The event class contains all of the data columns that can be reported by an event.

イベント カテゴリEvent category
関連するイベント クラスのグループ。A group of related event classes.

トレース (名詞)Trace (noun)
データベース エンジンDatabase Engineによって返されるイベントやデータのコレクション。A collection of events and data returned by the データベース エンジンDatabase Engine.

トレース (動詞)Trace (verb)
SQL ServerSQL Serverのインスタンス内のイベントを収集および監視すること。To collect and monitor events in an instance of SQL ServerSQL Server.

イベント クラス、データ列、およびトレース中に収集されるイベントの種類を識別するフィルターのコレクション。A collection of event classes, data columns and filters that identify the types of events to be collected during a trace.

トレースで収集されるイベントを限定する条件。Criteria that limit the events that are collected in a trace.

トレース ファイルTrace file
トレースの保存時に作成されるファイル。A file created when a trace is saved.

SQL Server プロファイラーSQL Server Profilerでは、トレースで収集されるイベント クラスやデータ列を定義するファイル。In SQL Server プロファイラーSQL Server Profiler, a file that defines the event classes and data columns to be collected in a trace.

トレース テーブルTrace table
SQL Server プロファイラーSQL Server Profilerで、トレースがテーブルに保存されるときに作成されるテーブル。In SQL Server プロファイラーSQL Server Profiler, a table that is created when a trace is saved to a table.

データ列による返されたイベントの説明Use Data Columns to Describe Returned Events

SQL トレースでは、トレース出力のデータ列を使用して、トレースの実行時に返されたイベントが説明されます。SQL Trace uses data columns in the trace output to describe events that are returned when the trace runs. 次の表に、 SQL Server プロファイラーSQL Server Profiler のデータ列を示します。これらのデータ列は、SQL トレースによって使用されるデータ列と同一のデータ列です。また、この表では、既定で選択されているデータ列を示しています。The following table describes the SQL Server プロファイラーSQL Server Profiler data columns, which are the same data columns as those used by SQL Trace, and indicates the columns that are selected by default.

データ列Data column 列番号Column number 説明Description
ApplicationNameApplicationName 1010 SQL ServerSQL Serverのインスタンスへの接続を作成したクライアント アプリケーションの名前。The name of the client application that created the connection to an instance of SQL ServerSQL Server. この列には、プログラム名ではなくアプリケーションによって渡された値が格納されます。This column is populated with the values passed by the application and not the name of the program.
BigintData1BigintData1 5252 トレースで指定されているイベント クラスに依存する値 (bigint データ型)。Value (bigint data type), which depends on the event class specified in the trace.
BigintData2BigintData2 5353 トレースで指定されているイベント クラスに依存する値 (bigint データ型)。Value (bigint data type), which depends on the event class specified in the trace.
Binary DataBinary Data 22 トレースにキャプチャされるイベント クラスに依存するバイナリ値。The binary value dependent on the event class that is captured in the trace.
ClientProcessIDClientProcessID 99 クライアント アプリケーションが実行されているプロセスに対し、ホスト コンピューターによって割り当てられた ID。The ID assigned by the host computer to the process where the client application is running. クライアントでクライアント プロセス ID が指定されると、このデータ列が作成されます。This data column is populated if the client process ID is provided by the client.
ColumnPermissionsColumnPermissions 4444 列権限が設定されていたかどうかを示します。Indicates whether a column permission was set. ステートメントのテキストを解析して、どの権限がどの列に適用されていたかを判断できます。You can parse the statement text to determine which permissions were applied to which columns.
CPUCPU 1818 イベントで使用された CPU 時間 (ミリ秒)。The amount of CPU time (in milliseconds) that is used by the event.
データベース IDDatabase ID 33 USE database_name ステートメントで指定されたデータベースの ID、または特定のインスタンスについて USE database_nameステートメントが実行されていない場合は既定のデータベースの ID となります。The ID of the database specified by the USE database_name statement, or the ID of the default database if no USE database_namestatement has been issued for a given instance. SQL Server プロファイラーSQL Server Profiler では、 ServerName データ列がトレースにキャプチャされ、そのサーバーが利用可能な場合、データベースの名前が表示されます。displays the name of the database if the ServerName data column is captured in the trace and the server is available. データベースに対応する値は、DB_ID 関数を使用して特定します。Determine the value for a database by using the DB_ID function.
DatabaseNameDatabaseName 3535 ユーザーのステートメントが実行されているデータベースの名前。The name of the database in which the user statement is running.
DBUserNameDBUserName 4040 クライアントの SQL ServerSQL Server ユーザー名。The SQL ServerSQL Server user name of the client.
DurationDuration 1313 イベントの期間 (ミリ秒)。The duration (in microseconds) of the event.

サーバーはマイクロ秒 (100 万分の 1 (10-6) 秒) 単位でのイベント期間、およびイベントにより使用されるミリ秒 (10-3秒) 単位での CPU 時間をレポートします。The server reports the duration of an event in microseconds (one millionth, or 10-6, of a second) and the amount of CPU time used by the event in milliseconds (one thousandth, or 10-3, of a second). SQL Server プロファイラーSQL Server Profiler のグラフィカル ユーザー インターフェイスに、既定ではミリ秒単位で Duration 列が表示されますが、トレースがファイルまたはデータベース テーブルに保存されると、 Duration 列の値はマイクロ秒単位で記述されます。The SQL Server プロファイラーSQL Server Profiler graphical user interface displays the Duration column in milliseconds by default, but when a trace is saved to either a file or a database table, the Duration column value is written in microseconds.
EndTimeEndTime 1515 イベントが終了した時刻。The time at which the event ended. SQL:BatchStartingSP:Startingなどのイベントの開始を示すイベント クラスには、このデータ列は作成されません。This column is not populated for event classes that refer to an event that is starting, such as SQL:BatchStarting or SP:Starting.
ErrorError 3131 特定のイベントのエラー番号。The error number of a given event. これは多くの場合、 sysmessagesに格納されたエラー番号です。Often this is the error number stored in sysmessages.
EventClassEventClass 2727 キャプチャされるイベント クラスの種類。The type of event class that is captured.
EventSequenceEventSequence 5151 このイベントのシーケンス番号。Sequence number for this event.
EventSubClassEventSubClass 2121 イベント サブクラスの種類。各イベント クラスに関するより詳細な情報を提供します。The type of event subclass, which provides further information about each event class. たとえば、 Execution Warning イベント クラスのイベント サブクラス値は、以下のような実行の警告の種類を表します。For example, event subclass values for the Execution Warning event class represent the type of execution warning:

1 = クエリの待機。1 = Query wait. クエリを実行するには、メモリなど、そのためのリソースが確保されるまで待機しなければなりません。The query must wait for resources before it can execute; for example, memory.

2 = クエリのタイムアウト。クエリの実行に必要なリソースが確保されるのを待機していて時間切れになりました。2 = Query time-out. The query timed out while waiting for required resources to execute. すべてのイベント クラスに対して、このデータ列が作成されるわけではありません。This data column is not populated for all event classes.
GUIDGUID 5454 トレースで指定されているイベント クラスに依存する GUID 値。GUID value which depends on the event class specified in the trace.
FileNameFileName 3636 変更されるファイルの論理名。The logical name of the file that is modified.
HandleHandle 3333 サーバーとの間で実行を調整するときに ODBC、OLE DB、または DB-Library によって使用される整数。The integer used by ODBC, OLE DB, or DB-Library to coordinate server execution.
HostNameHostName 88 クライアントが実行しているコンピューターの名前。The name of the computer on which the client is running. このデータ列には、クライアントがホスト名を指定している場合にデータが格納されます。This data column is populated if the host name is provided by the client. ホスト名を指定するには、HOST_NAME 関数を使用します。To determine the host name, use the HOST_NAME function.
IndexIDIndexID 2424 イベントの影響を受けるオブジェクトに付けられたインデックス用の ID。The ID for the index on the object affected by the event. オブジェクトのインデックス ID を調べるには、 sysindexes システム テーブルの indid 列を使用します。To determine the index ID for an object, use the indid column of the sysindexes system table.
IntegerDataIntegerData 2525 トレースにキャプチャされるイベント クラスに依存する整数値。The integer value dependent on the event class captured in the trace.
IntegerData2IntegerData2 5555 トレースにキャプチャされるイベント クラスに依存する整数値。The integer value dependent on the event class captured in the trace.
IsSystemIsSystem 6060 システム プロセスまたはユーザー プロセスのどちらでイベントが発生したのかを示します。Indicates whether the event occurred on a system process or a user process:

1 = システム1 = system

0 = ユーザー0 = user
LineNumberLineNumber 55 エラーを含む行の番号が格納されます。Contains the number of the line that contains the error. Transact-SQLTransact-SQL SP:StmtStarting のようなステートメントを含むイベントの場合、 LineNumber にはストアド プロシージャまたはバッチでのステートメントの行番号が格納されます。For events that involve Transact-SQLTransact-SQL statements, like SP:StmtStarting, the LineNumber contains the line number of the statement in the stored procedure or batch.
LinkedServerNameLinkedServerName 4545 リンク サーバーの名前Name of the linked server.
LoginNameLoginName 1111 ユーザーのログイン名 (SQL Server セキュリティ ログインまたは DOMAIN\Username の形式の Windows ログイン資格情報)。The name of the login of the user (either SQL Server security login or the Windows login credentials in the form of DOMAIN\Username).
LoginSidLoginSid 4141 ログイン ユーザーのセキュリティ ID (SID)。The security identifier (SID) of the logged-in user. この情報は、 master データベースの sys.server_principals ビューで参照できます。You can find this information in the sys.server_principals view of the master database. サーバーへの各ログインには一意の ID が付けられています。Each login to the server has a unique ID.
MethodNameMethodName 4747 OLEDB メソッドの名前。Name of the OLEDB method.
モードMode 3232 各種のイベントで要求している状態、または受け取った状態を説明するときに使用される整数。The integer used by various events to describe a state the event is requesting or has received.
NestLevelNestLevel 2929 @@NESTLEVEL から返されるデータを表す整数。The integer that represents the data returned by @@NESTLEVEL.
NTDomainNameNTDomainName 77 ユーザーが所属する Microsoft Windows ドメイン。The Microsoft Windows domain to which the user belongs.
NTUserNameNTUserName 66 Windows のユーザー名。The Windows user name.
Exchange SpillObjectID 2222 オブジェクトに対してシステムが割り当てた ID。The system-assigned ID of the object.
ObjectID2ObjectID2 5656 関連するオブジェクトまたはエンティティの ID (使用可能な場合)。The ID of the related object or entity, if available.
ObjectNameObjectName 3434 参照されているオブジェクトの名前。The name of the object that is referenced.
ObjectTypeObjectType 2828 イベントに関係するオブジェクトの種類を表す値。The value representing the type of the object involved in the event. この値は sysobjectstype列に対応します。This value corresponds to the type column in sysobjects.
OffsetOffset 6161 ストアド プロシージャまたはバッチ内のステートメントの開始オフセット。The starting offset of the statement within the stored procedure or batch.
OwnerIDOwnerID 5858 ロック イベントの場合にのみ該当します。For lock events only. ロックを所有するオブジェクトの種類。The type of the object that owns a lock.
OwnerNameOwnerName 3737 オブジェクト所有者のデータベース ユーザー名。The database user name of the object owner.
ParentNameParentName 5959 オブジェクトが存在するスキーマ名。The name of the schema in which the object resides.
アクセス許可Permissions 1919 チェックされた権限の種類を表す整数値。The integer value that represents the type of permissions checked. 値は次のとおりです。Values are:






32 = EXECUTE (プロシージャのみ)32 = EXECUTE (procedures only)

4096 = SELECT ANY (1 列以上)4096 = SELECT ANY (at least one column)


ProviderNameProviderName 4646 OLEDB プロバイダーの名前。Name of the OLEDB provider.
ReadsReads 1616 論理ディスク上の読み取り操作の回数。この操作は、イベントの代わりにサーバーによって実行されます。The number of read operations on the logical disk that are performed by the server on behalf of the event. これらの読み取り操作には、ステートメントの実行中に行われるテーブルやバッファーからのすべての読み取り操作が含まれます。These read operations include all reads from tables and buffers during the statement's execution.
RequestIDRequestID 4949 ステートメントを含んでいる要求の ID。ID of the request that contains the statement.
RoleNameRoleName 3838 有効になっているアプリケーション ロールの名前。The name of the application role that is being enabled.
RowCountsRowCounts 4848 バッチ内の行数。The number of rows in the batch.
ServerNameServerName 2626 トレースしている SQL ServerSQL Server インスタンスの名前。The name of the instance of SQL ServerSQL Server that is being traced.
SessionLoginNameSessionLoginName 6464 セッションを開始したユーザーのログイン名。The login name of the user who originated the session. たとえば、 SQL ServerSQL ServerLogin1 を使用して接続し、 Login2としてステートメントを実行した場合、 SessionLoginName には Login1が表示され、 LoginName には Login2が表示されます。For example, if you connect to SQL ServerSQL Server using Login1 and execute a statement as Login2, SessionLoginName displays Login1, while LoginName displays Login2. このデータ列には、 SQL ServerSQL Server ログインと Windows ログインの両方が表示されます。This data column displays both SQL ServerSQL Server and Windows logins.
SeveritySeverity 2020 例外イベントの重大度レベル。The severity level of the exception event.
SourceDatabaseIDSourceDatabaseID 6262 オブジェクトのソースが存在するデータベースの ID。The ID of the database in which the source of the object exists.
SPIDSPID 1212 SQL ServerSQL Server によって割り当てられているサーバー プロセス ID (SPID)。この ID はクライアントに関連付けられています。The server process ID (SPID) that is assigned by SQL ServerSQL Server to the process that is associated with the client.
SqlHandleSqlHandle 6363 64 ビット ハッシュ。アドホック クエリやデータベースのテキスト、および SQL オブジェクトのオブジェクト ID に基づいています。64-bit hash based on the text of an ad hoc query or the database and object ID of an SQL object. この値を sys.dm_exec_sql_text() に渡して、関連付けられている SQL テキストを取得できます。This value can be passed to sys.dm_exec_sql_text() to retrieve the associated SQL text.
StartTimeStartTime 1414 イベントの開始時刻 (取得できた場合)。The time at which the event started, when available.
StateState 3030 エラー状態コード。Error state code.
SuccessSuccess 2323 イベントが正常に終了したかどうかを表します。Represents whether the event was successful. 値は次のとおりです。Values include:

1 = 成功。1 = Success.

0 = 失敗。0 = Failure

たとえば、 1 は、権限チェックの成功を表し、 0 は失敗を表します。For example, a 1 means a successful permissions check, and a 0 means a failed check.
TargetLoginNameTargetLoginName 4242 ログインを対象とする操作 (新規ログインの追加など) の場合の対象ログインの名前。For actions that target a login, the name of the targeted login; for example, to add a new login.
TargetLoginSidTargetLoginSid 4343 ログインを対象とする操作 (新規ログインの追加など) の場合の対象ログインの SID。For actions that target a login, the SID of the targeted login; for example, to add a new login.
TargetUserNameTargetUserName 3939 データベース ユーザーを対象とした操作 (ユーザーへの権限の許可など) を行う場合の対象となるユーザーの名前。For actions that target a database user, the name of that user; for example, to grant permission to a user.
TextDataTextData 11 トレースにキャプチャされるイベント クラスに依存するテキスト値。The text value dependent on the event class that is captured in the trace. ただし、パラメーター化クエリをトレースする場合は、変数は TextData 列のデータ値と共には表示されません。However, if you trace a parameterized query, the variables are not displayed with data values in the TextData column.
Transaction IDTransaction ID 44 トランザクションに対してシステムが割り当てた ID。The system-assigned ID of the transaction.
TypeType 5757 トレースにキャプチャされるイベント クラスに依存する整数値。The integer value dependent on the event class captured in the trace.
WritesWrites 1717 イベントの代わりにサーバーによって実行される物理ディスクの書き込み操作回数。The number of physical disk write operations that are performed by the server on behalf of the event.
XactSequenceXactSequence 5050 現在のトランザクションを記述するトークン。A token to describe the current transaction.

*これらのデータ列は、既定ですべてのイベントについて作成されます。*These data columns are populated by default for all events.

**ObjectType データ列の詳細については、「ObjectType トレース イベント列」を参照してください。**For more information about the ObjectType data column, see ObjectType Trace Event Column.

SQL トレースのタスクSQL Trace Tasks

タスクの説明Task Description トピックTopic
Transact-SQL ストアド プロシージャを使用してトレースを作成および実行する方法について説明します。Describes how to create and run traces using Transact-SQL stored procedures. Transact-SQL ストアド プロシージャを使用したトレースの作成と実行Create and Run Traces Using Transact-SQL Stored Procedures
SQL Server データベース エンジンSQL Server Database Engineのインスタンスに対するストアド プロシージャを使用して手動トレースを作成する方法について説明します。Describes how to create manual traces using stored procedures on an instance of the SQL Server データベース エンジンSQL Server Database Engine. ストアド プロシージャを使用した手動トレースの作成Create Manual Traces using Stored Procedures
トレース結果が書き込まれるファイルにトレース結果を保存する方法について説明します。Describes how to save trace results to the file where the trace results are written. トレース結果のファイルへの保存Save Trace Results to a File
temp ディレクトリの空き領域の使用によってトレース データへのアクセスを向上させる方法について説明します。Describes how to improve access to trace data by using space in the temp directory. トレース データへのアクセスを向上させるImprove Access to Trace Data
ストアド プロシージャを使用してトレースを作成する方法について説明します。Describes how to use stored procedures to create a trace. トレースの作成 (Transact-SQL)Create a Trace (Transact-SQL)
ストアド プロシージャを使用して、トレース中のイベントに関して必要な情報のみを取得するフィルターを作成する方法について説明します。Describes how to use stored procedures to create a filter that retrieves only the information you need on an event being traced. トレース フィルターの設定 (Transact-SQL)Set a Trace Filter (Transact-SQL)
ストアド プロシージャを使用して既存のトレースを変更する方法について説明します。Describes how to use stored procedures to modify an existing trace. 既存のトレースの変更 (Transact-SQL)Modify an Existing Trace (Transact-SQL)
組み込み関数を使用して、保存されているトレースを表示する方法について説明します。Describes how to use built-in functions to view a saved trace. 保存されているトレースの表示 (Transact-SQL)View a Saved Trace (Transact-SQL)
組み込み関数を使用してトレース フィルター情報を表示する方法について説明します。Describes how to use built-in functions to view trace filter information. フィルター情報の表示 (Transact-SQL)View Filter Information (Transact-SQL)
ストアド プロシージャを使用してトレースを削除する方法について説明します。Describes how to use stored procedures to delete a trace. トレースの削除 (Transact-SQL)Delete a Trace (Transact-SQL)
トレースによって発生するパフォーマンス コストを最小限に抑える方法について説明します。Describes how to minimize the performance cost incurred by a trace. SQL トレースの最適化Optimize SQL Trace
トレース中に発生するオーバーヘッドを最小限にするためにトレースをフィルター処理する方法について説明します。Describes how to filter a trace to minimize the overhead that is incurred during a trace. トレースへのフィルターの適用Filter a Trace
トレースで収集されるデータ量を最小限にする方法について説明します。Describes how to minimize the amount of data that the trace collects. トレース ファイルとテーブル サイズの制限Limit Trace File and Table Sizes
Microsoft SQL ServerSQL Serverでトレースのスケジュールを設定するための 2 つの方法について説明します。Describes the two ways to schedule tracing in Microsoft SQL ServerSQL Server. トレースのスケジュール設定Schedule Traces

参照See Also

SQL Server プロファイラーのテンプレートと権限 SQL Server Profiler Templates and Permissions
SQL Server 管理オブジェクト (SMO) プログラミング ガイドSQL Server Management Objects (SMO) Programming Guide