DBCC INPUTBUFFER (Transact-SQL)
Отображает последнюю инструкцию, отправленную клиентом экземпляру MicrosoftSQL Server.
Синтаксис
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);