Поделиться через


DBCC INPUTBUFFER (Transact-SQL)

Отображает последнюю инструкцию, отправленную клиентом экземпляру MicrosoftSQL Server.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

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

Аргументы

  • 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 Event или Language Event. Если последние события не обнаружены, на выходе будет No Event.

Parameters

int

0 = Текст

1- n = Параметры

EventInfo

nvarchar(4000)

Если столбец EventType имеет значение «RPC», столбец EventInfo содержит лишь имя процедуры. Для значения «Language» столбца 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.

Разрешения

Требуется выполнение одного из следующих условий:

  • пользователь должен быть членом предопределенной роли сервера sysadmin;

  • у пользователя должно быть разрешение VIEW SERVER STATE;

  • идентификатор сеанса (session_id) должен быть равным идентификатору сеансу, под которым выполняется команда. Для определения идентификатора сеанса выполните следующий запрос:

    SELECT @@spid
    

Примеры

В следующем примере инструкция DBCC INPUTBUFFER выполняется по второму соединению, в то время как по ранее установленному соединению выполняется длинная транзакция.

CREATE TABLE T1 (Col1 int, Col2 char(3));
GO
DECLARE @i int;
SELECT @i = 0
BEGIN TRAN
SELECT @i = 0
WHILE (@i < 100000)
BEGIN
INSERT INTO T1 VALUES (@i, CAST(@i AS char(3)))
SELECT @i = @i + 1
END;
COMMIT TRAN;
--Start new connection #2.
DBCC INPUTBUFFER (52);