DBCC INPUTBUFFER (Transact-SQL)

Применимо к:база данныхSQL Server Azure SQL Управляемый экземпляр SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

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.
Параметры 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);

См. также