Condividi tramite


DBCC INPUTBUFFER (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

Visualizza l'ultima istruzione inviata da un client a un'istanza di SQL Server.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

session_id

ID sessione associato a ogni connessione primaria attiva.

request_id

Richiesta esatta (batch) da cercare all'interno della sessione corrente.

La query seguente restituisce request_id:

SELECT request_id
FROM sys.dm_exec_requests
WHERE session_id = @@spid;

WITH

Consente di specificare opzioni.

  • NO_INFOMSGS

    Evita la visualizzazione di tutti i messaggi informativi con livello di gravità compreso tra 0 e 10.

Set di risultati

DBCC INPUTBUFFER restituisce un set di righe con le colonne seguenti.

Nome colonna Tipo di dati Descrizione
EventType nvarchar(30) Tipo di evento. Può corrispondere a RPC Event o Language Event. Se non viene rilevato un ultimo evento, l'output sarà No Event.
Parametri smallint 0 = Testo

1- n = Parametri
EventInfo nvarchar(4000) Se il valore della colonna EventType è RPC Event, EventInfo contiene solo il nome della procedura. Se EventType corrisponde a Language Event, vengono visualizzati solo i primi 4000 caratteri dell'evento.

Ad esempio, restituisce DBCC INPUTBUFFER il set di risultati seguente quando l'ultimo evento nel buffer è 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.

Nota

A partire da SQL Server 2014 (12.x) SP2, usare sys.dm_exec_input_buffer per restituire informazioni sulle istruzioni inviate a un'istanza di SQL Server.

Autorizzazioni

SQL Server richiede l'autorizzazione VIEW SERVER STATE o l'appartenenza al ruolo predefinito del server sysadmin .

Senza uno di questi, gli utenti possono visualizzare solo il buffer di input della propria sessione. Ciò significa che session_id deve corrispondere all'ID della sessione in cui è in esecuzione il comando. Per determinare l'ID sessione. Eseguire la query seguente:

SELECT @@spid;

database SQL livelli Premium e Business Critical richiedono Autorizzazione VIEW DATABASE STATE nel database. database SQL livelli Standard, Basic e Per utilizzo generico richiedono l'account amministratore database SQL.

Esempi

Nell'esempio seguente viene eseguito DBCC INPUTBUFFER in una seconda connessione durante una transazione di lunga durata su una connessione precedente.

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);

Vedi anche