DBCC INPUTBUFFER (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
クライアントから 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.
注意
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);