sp_trace_create (Transact-SQL)

適用対象: SQL Server

トレース定義を作成します。 新しいトレースは停止状態です。

重要

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに拡張イベントを使用します。

Transact-SQL 構文表記規則

構文

sp_trace_create
    [ @traceid = ] traceid OUTPUT
    , [ @options = ] options
    , [ @tracefile = ] N'tracefile'
    [ , [ @maxfilesize = ] maxfilesize ]
    [ , [ @stoptime = ] 'stoptime' ]
    [ , [ @filecount = ] filecount ]
[ ; ]

引数

[ @traceid = ] traceid OUTPUT

新しいトレースに SQL Server によって割り当てられた番号。 ユーザー指定の入力は無視されます。 @traceid は、 int 型の OUTPUT パラメーターで、既定値は NULL です。 ユーザーは、 @traceid 値を使用して、このストアド プロシージャによって定義されたトレースを識別、変更、および制御します。

[ @options = ] options

トレースのオプション セットを指定します。 @optionsint で、既定値はありません。 選択したオプションの合計値を指定することで、これらのオプションの組み合わせを選択できます。 たとえば、オプションTRACE_FILE_ROLLOVERSHUTDOWN_ON_ERRORの両方をオンにするには、@options6を指定します。

次の表に、オプション、説明、およびその値を示します。

オプション名 オプションの値 説明
TRACE_FILE_ROLLOVER 2 @filecountに達すると、現在のトレース ファイルが閉じられ、新しいファイルが作成されることを指定します。 すべての新しいレコードが新しいファイルに書き込まれます。 新しいファイルの名前は前のファイルと同じですが、シーケンスを示す整数が追加されます。 たとえば、元のトレース ファイルの名前が filename.trc の場合、次のトレース ファイルの名前は filename_1.trc、次のトレース ファイルは filename_2.trcなどです。

追加のロールオーバー トレース ファイルが作成されると、ファイル名に追加される整数値が順番に増加します。

@FILECOUNTの値を指定せずにこのオプションを指定した場合、SQL Server では既定値の @filecount (5 MB) が使用されます。
SHUTDOWN_ON_ERROR 4 何らかの理由でトレースをファイルに書き込むことができない場合、SQL Server がシャットダウンすることを指定します。 このオプションは、セキュリティ監査トレースを実行するときに役立ちます。
TRACE_PRODUCE_BLACKBOX 8 サーバーによって生成されたトレース情報の最後の 5 MB のレコードをサーバーによって保存することを指定します。 TRACE_PRODUCE_BLACKBOX は、他のすべてのオプションと互換性がありません。

[ @tracefile = ] N'tracefile'

トレースの書き込み先となる場所とファイル名を指定します。 @tracefile は既定値なしで nvarchar(245) です。 @tracefile には、ローカル ディレクトリ ( N'C:\MSSQL\Trace\trace.trc' など) または共有またはパスへの UNC ( N'\\<servername>\<sharename>\<directory>\trace.trc' など) を指定できます。

SQL Server では、すべてのトレース ファイル名に .trc 拡張子が追加されます。 TRACE_FILE_ROLLOVER オプションと@filecountが指定されている場合、SQL Server は、元のトレース ファイルが最大サイズに達したときに新しいトレース ファイルを作成します。 新しいファイルの名前は元のファイルと同じですが、_n が追加され、 1で始まるシーケンスが示されます。 たとえば、最初のトレース ファイルの名前が filename.trc の場合、2 番目のトレース ファイルには filename_1.trc という名前が付けられます。

TRACE_FILE_ROLLOVER オプションを使用する場合は、元のトレース ファイル名にアンダースコア文字を使用しないことをお勧めします。 アンダースコアを使用すると、次の動作が発生します。

  • SQL Server プロファイラーは、ロールオーバー ファイルを自動的に読み込んだり、ロールオーバー ファイルの読み込みを求めたりすることはありません (これらのファイル ロールオーバー オプションのいずれかが構成されている場合)。

  • sys.fn_trace_gettable関数では、元のファイル名がアンダースコアと数値で終わるロールオーバー ファイル (@number_files引数を使用して指定した場合) は読み込まれません。 (これは、ファイルのロール オーバー時に自動的に追加されるアンダースコアと数字には適用されません)。

Note

このような動作に対処するには、元のファイル名のアンダースコアを削除してトレース ファイルの名前を変更します。 たとえば、元のファイルに my_trace.trc という名前が付けられ、ロールオーバー ファイルの名前が my_trace_1.trc の場合は、SQL Server プロファイラーでファイルを開く前に、ファイルの名前を mytrace.trc および mytrace_1.trc に変更できます。

TRACE_PRODUCE_BLACKBOX オプションを使用する場合、@tracefileを指定することはできません。

[ @maxfilesize = ] maxfilesize

トレース ファイルの最大サイズを MB 単位で指定します。 @maxfilesizebigint で、既定値は 5 です。

このパラメーターを TRACE_FILE_ROLLOVER オプションなしで指定した場合、使用されるディスク領域が @maxfilesizeで指定された量を超えると、トレースはファイルへの記録を停止します。

[ @stoptime = ] 'stoptime'

トレースを停止する日時を指定します。 @stoptimedatetime で、既定値は NULL です。 NULL場合、トレースは手動で停止するか、サーバーがシャットダウンするまで実行されます。

@stoptime@maxfilesizeの両方が指定されていて、TRACE_FILE_ROLLOVERが指定されていない場合は、指定した停止時間または最大ファイル サイズに達したときにトレースが上位になります。 @stoptime@maxfilesize、およびTRACE_FILE_ROLLOVERが指定されている場合、トレースがドライブを満たしていないと仮定して、トレースは指定された停止時間に停止します。

[ @filecount = ] 'filecount'

同じ基本ファイル名で保持するトレース ファイルの最大数を指定します。 @filecount1 より大きい int です。 このパラメーターは、 TRACE_FILE_ROLLOVER オプションが指定されている場合にのみ有効です。 @filecountが指定されている場合、SQL Server は、新しいトレース ファイルを開く前に最も古いトレース ファイルを削除することで、@filecountトレース ファイル以下を維持しようとします。 SQL Server では、基本ファイル名に数値を追加することで、トレース ファイルの有効期間を追跡します。

たとえば、 @tracefile パラメーターが C:\mytrace として指定されている場合、名前 C:\mytrace_123.trc を持つファイルが、 C:\mytrace_124.trcという名前のファイルよりも古くなります。 @filecount2 に設定されている場合、SQL Server はトレース ファイル C:\mytrace_125.trcを作成する前にファイル C:\mytrace_123.trcを削除します。

SQL Server は各ファイルの削除を 1 回だけ試行し、別のプロセスで使用されているファイルを削除することはできません。 そのため、トレースの実行中に別のアプリケーションがトレース ファイルを操作している場合、SQL Server によってこれらのトレース ファイルがファイル システムに残される可能性があります。

リターン コードの値

次の表では、ストアド プロシージャの完了後に取得できるコード値について説明します。

リターン コード 説明
0 エラーなし。
1 不明なエラー。
10 無効なオプションです。 指定したオプションが一致しない場合に返されます。
12 ファイルが作成されていない。
13 メモリが不足しています。 指定されたアクションを実行するのに十分なメモリがない場合に返されます。
14 停止時間が無効です。 指定された停止時間が既に発生したときに返されます。
15 パラメーターが無効。 ユーザーが互換性のないパラメーターを指定したときに返されます。

解説

sp_trace_create は、以前のバージョンの SQL Server で使用できる拡張ストアド プロシージャ xp_trace_* によって以前に実行されたアクションの多くを実行する SQL Server ストアド プロシージャです。 次の代わりに sp_trace_create を使用します。

  • xp_trace_addnewqueue
  • xp_trace_setqueuecreateinfo
  • xp_trace_setqueuedestination

sp_trace_create トレース定義のみが作成されます。 このストアド プロシージャを使用してトレースを開始または変更することはできません。

すべての SQL トレース ストアド プロシージャ (sp_trace_*) のパラメーターは厳密に型指定されます。 これらのパラメーターが、引数の説明で指定されている正しいデータ型で呼び出されないと、このストアド プロシージャではエラーが返されます。

sp_trace_createの場合、SQL Server サービス アカウントには、トレース ファイル フォルダーに対する write アクセス許可が必要です。 SQL Server サービス アカウントがトレース ファイルが配置されているコンピューターの管理者でない場合は、SQL Server サービス アカウントに書き込みアクセス許可を明示的に付与する必要があります。

Note

fn_trace_gettableシステム関数を使用して、sp_trace_createで作成されたトレース ファイルをテーブルに自動的に読み込むことができます。 詳細については、「 sys.fn_trace_gettable」を参照してください。

トレース ストアド プロシージャの使用例については、「トレースの作成を参照してください。

TRACE_PRODUCE_BLACKBOX には、次の特性があります。

  • ロールオーバー トレースです。 既定の @filecount は 2 ですが、 @filecount オプションを使用してユーザーによってオーバーライドできます。

  • 他のトレースと同様に、既定の @maxfilesizeは 5 MB であり、変更できます。

  • ファイル名を指定できません。 ファイルは次のように保存されます: N'%SQLDIR%\MSSQL\DATA\blackbox.trc'

  • トレースには、次のイベントとその列のみが含まれます。

    • RPC の開始
    • バッチ開始
    • 例外
    • アテンション
  • イベントまたは列は、このトレースに対して追加または削除できません。

  • このトレースにはフィルターを指定できません。

アクセス許可

ALTER TRACE 権限が必要です。