次の方法で共有


DBCC INPUTBUFFER (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

クライアントから SQL Server のインスタンスに最後に送信されたステートメントを表示します。

Transact-SQL 構文表記規則

構文

DBCC INPUTBUFFER ( session_id [ , request_id ] )
[ WITH NO_INFOMSGS ]

Note

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

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.

注意

SQL Server 2014 (12.x) SP2 以降の場合は、sys.dm_exec_input_buffer を使用して、SQL Server のインスタンスに送信されたステートメントに関する情報を返します。

アクセス許可

SQL Server では、VIEW SERVER STATE アクセス許可、または sysadmin 固定サーバー ロールのメンバーシップが必要です。

これらがない場合、ユーザーは自分のセッションの入力バッファーのみを表示できます。 つまり、session_id は、コマンドが実行されるセッション ID と同じである必要があります。 セッション ID を特定するには、次のクエリを実行します。

SELECT @@spid;

SQL Database の Premium レベルおよび Business Critical レベルでは、データベースで VIEW DATABASE STATE アクセス許可が必要です。 SQL Database Standard、Basic、および General Purpose レベルでは、SQL Database 管理者アカウントが必要です。

次の例では、前の接続で長いトランザクションが実行されている間に、2 番目の接続で DBCC INPUTBUFFER を実行します。

CREATE TABLE dbo.T1 (Col1 INT, Col2 CHAR(3));
GO

DECLARE @i INT = 0;

BEGIN TRANSACTION

SET @i = 0;

WHILE (@i < 100000)
BEGIN
    INSERT INTO dbo.T1
    VALUES (@i, CAST(@i AS CHAR(3)));
    SET @i += 1;
END;

COMMIT TRANSACTION;

--Start new connection #2.
DBCC INPUTBUFFER (52);

関連項目