有没有办法在不使用DBCC INPUTBUFFER
的情况下获取最后执行的SQL Server命令?
例如,是否有包含此信息的系统视图或目录?
感谢。
答案 0 :(得分:1)
第一次使用
获取SPIDSELECT @@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