在没有DBCC INPUTBUFFER的SQL Server中获取最后一个命令

时间:2013-10-16 07:46:40

标签: sql-server dbcc

有没有办法在不使用DBCC INPUTBUFFER的情况下获取最后执行的SQL Server命令?

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

感谢。

3 个答案:

答案 0 :(得分:1)

第一次使用

获取SPID
SELECT @@SPID

然后将返回的SPID传递给以下内容:

DECLARE @sqltext VARBINARY(128)
SELECT @sqltext = sql_handle
FROM sys.sysprocesses
WHERE spid = 61
SELECT TEXT
FROM sys.dm_exec_sql_text(@sqltext)
GO

答案 1 :(得分:0)

以下链接可以帮助您.. Get Last Running Query Based on SPID

答案 2 :(得分:0)

是的,在 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