Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 获取SQL Server中不带DBCC INPUTBUFFER的最后一个命令_Sql Server_Dbcc - Fatal编程技术网

Sql server 获取SQL Server中不带DBCC INPUTBUFFER的最后一个命令

Sql server 获取SQL Server中不带DBCC INPUTBUFFER的最后一个命令,sql-server,dbcc,Sql Server,Dbcc,有没有一种方法可以在不使用DBCC INPUTBUFFER的情况下获取最后执行的SQL Server命令 例如,是否存在包含此信息的系统视图或目录 谢谢。您可以将SPID(SQL进程ID)传递给以下人员: DECLARE @sql_handle VARBINARY(128); SELECT @sql_handle = sql_handle FROM sys.sysprocesses WHERE spid = @@SPID; --you can pass a different SPID her

有没有一种方法可以在不使用
DBCC INPUTBUFFER
的情况下获取最后执行的SQL Server命令

例如,是否存在包含此信息的系统视图或目录

谢谢。

您可以将SPID(SQL进程ID)传递给以下人员:

DECLARE @sql_handle VARBINARY(128);

SELECT @sql_handle = sql_handle
FROM sys.sysprocesses
WHERE spid = @@SPID; --you can pass a different SPID here

SELECT [text]
FROM sys.dm_exec_sql_text(@sql_handle);

可以,从SQL Server 2014 SP4及更新版本中,您可以使用以下DMV:

IF OBJECT_ID('sys.dm_exec_input_buffer') IS NOT NULL --we are running SQL 2014 SP4 or newer!
BEGIN
    SELECT b.*
    FROM sys.dm_exec_input_buffer(@@SPID, NULL) b;
END
ELSE --we are running SQL 2014 SP3 or older...
BEGIN
    CREATE TABLE #TraceInfo (
        EventType NVARCHAR(255)
        ,parameters INTEGER
        ,event_info NVARCHAR(4000)
        );

    INSERT INTO #TraceInfo
    EXEC ('DBCC INPUTBUFFER(@@SPID) WITH NO_INFOMSGS');

    SELECT t.*
    FROM #TraceInfo t;
END

虽然这可能适用于许多情况,但情况不同。当客户端调用存储过程时,DBCC INPUT BUFFER将返回该存储过程及其调用时使用的参数,但sys.dm_exec_sql_text将返回创建该存储过程的文本。