分享方式:


DBCC INPUTBUFFER (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

顯示從用戶端傳送至 SQL Server 執行個體的最後一個陳述式。

Transact-SQL 語法慣例

Syntax

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

注意

若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件

引數

session_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 事件」或「語言事件」。 如果未偵測到上一個事件,輸出將為「無事件」
參數 smallint 0 = 文字

1- n = 參數
EventInfo nvarchar(4000) 如果 EventType 是 RPC,EventInfo只會包含程序名稱。 如果 EventType 是「語言」,便只會顯示事件的前 4000 個字元。

例如,當緩衝區中的最後一個事件是 DBCC INPUTBUFFER (11) 時,DBCC INPUTBUFFER 會傳回下列結果集。

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 權限,或系統管理員固定伺服器角色的成員資格。

如果沒有上述任何權限,使用者就只能檢視自身工作階段的輸入緩衝區。 這表示 session_id 必須與執行命令的工作階段識別碼相同。 若要確認工作階段識別碼,請執行下列查詢:

SELECT @@spid;

SQL Database 進階層和業務關鍵層需要資料庫中的 VIEW DATABASE STATE 權限。 SQL Database 標準、基本和一般用途層需要 SQL Database 管理帳戶。

範例

下列範例會在先前的連接執行長交易時,在第二個連接上執行 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);

另請參閱