DBCC INPUTBUFFER (Transact-SQL)
クライアントから Microsoft SQL Server インスタンスに最後に送信されたステートメントを表示します。
構文
DBCC INPUTBUFFER ( session_id [ , request_id ])
[WITH NO_INFOMSGS ]
引数
session_id
アクティブな各プライマリ接続に関連付けられているセッション ID を指定します。request_id
現在のセッション内で検索する具体的な要求 (バッチ) を指定します。次のクエリは request_id を返します。
SELECT request_id FROM sys.dm_exec_requests WHERE session_id = @@spid;
WITH
オプションを指定可能にします。NO_INFOMSGS
重大度レベル 0 から 10 のすべての情報メッセージを表示しないようにします。
結果セット
DBCC INPUTBUFFER では、次の列を含む結果セットが返されます。
列名 |
データ型 |
説明 |
---|---|---|
EventType |
nvarchar(30) |
イベントの種類。 RPC Event または Language Event になります。 前回のイベントが検出されなかった場合、出力は No Event になります。 |
パラメーター |
smallint |
0 = テキスト 1- n = パラメーター |
EventInfo |
nvarchar(4000) |
EventType が RPC の場合、EventInfo にはプロシージャ名だけが含まれます。 EventType が Language の場合は、イベントの最初の 4,000 文字だけが表示されます。 |
たとえば、DBCC INPUTBUFFER では、バッファー内の最後のイベントが DBCC INPUTBUFFER(11) である場合、次の結果セットが返されます。
EventType Parameters EventInfo
-------------- ---------- ---------------------
Language Event 0 DBCC INPUTBUFFER (11)
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
権限
次のいずれかが必要です。
ユーザーは、sysadmin 固定サーバー ロールのメンバーである必要があります。
ユーザーには VIEW SERVER STATE 権限が必要です。
session_id は、コマンドが実行されるセッション ID と同じである必要があります。 セッション ID を特定するには、次のクエリを実行します。
SELECT @@spid;
使用例
次の例では、前の接続で長いトランザクションが実行されている間に、2 番目の接続で DBCC INPUTBUFFER を実行します。
CREATE TABLE dbo.T1 (Col1 int, Col2 char(3));
GO
DECLARE @i int = 0;
BEGIN TRAN
SET @i = 0;
WHILE (@i < 100000)
BEGIN
INSERT INTO dbo.T1 VALUES (@i, CAST(@i AS char(3)));
SET @i += 1;
END;
COMMIT TRAN;
--Start new connection #2.
DBCC INPUTBUFFER (52);