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


DBCC INPUTBUFFER (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Отображает последнюю инструкцию, отправляемую от клиента к экземпляру SQL 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;

ВМЕСТЕ С

Позволяет задавать параметры.

  • NO_INFOMSGS

    Подавляет все информационные сообщения со степенями серьезности от 0 до 10.

Результирующие наборы

DBCC INPUTBUFFER возвращает набор строк со следующими столбцами.

Имя столбца Тип данных Description
EventType nvarchar(30) Тип события. Может быть RPC Event или Language Event. Если последние события не обнаружены, на выходе будет No Event.
Параметры smallint 0 = Текст

1- n = параметры
EventInfo nvarchar(4000) Если столбец EventType имеет значение RPC, столбец EventInfo содержит лишь имя процедуры. Для значения Language столбца EventType выводятся только первые 4000 символов события.

Например, возвращает следующий результирующий набор при 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) с пакетом обновления 2 (SP2) используйте sys.dm_exec_input_buffer для возврата сведений об инструкциях, отправленных в экземпляр SQL Server.

Разрешения

ДЛЯ SQL Server требуется разрешение VIEW SERVER STATE или членство в предопределенных ролях сервера sysadmin .

Без каких-либо из них пользователи могут просматривать только входной буфер собственного сеанса. Это означает, что значение session_id должно быть равно идентификатору сеанса, с которым выполняется команда. Чтобы определить идентификатор сеанса. Выполните следующий запрос:

SELECT @@spid;

для уровней База данных SQL Premium и критически важный для бизнеса требуется разрешение VIEW DATABASE STATE в базе данных. База данных SQL уровнях "Стандартный", "Базовый" и "Общего назначения" требуется учетная запись администратора База данных SQL.

Примеры

В следующем примере инструкция 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);

См. также