0

为了能够访问会话查询,我在研究期间发现的所有结果都是关于在 SQL Server 会话中执行的最后一个查询。

有没有办法访问在会话中运行的所有查询而不是 SQL Server 探查器,因为在生产环境中使用探查器并不容易。

有什么帮助吗?

4

1 回答 1

0

我可能在这里找到了解决您问题的方法。我添加了一个游标来获取特定会话的所有查询:

DECLARE @sql TABLE(sql_handle VARBINARY(128))
DECLARE @sqltext VARBINARY(128)

INSERT INTO @sql
SELECT sql_handle
FROM sys.sysprocesses p
WHERE p.spid = (YOUR_SESSION_ID)

DECLARE MyCursor CURSOR FOR
SELECT sql_handle 
FROM @sql
OPEN MyCursor
FETCH NEXT FROM MyCursor
INTO @sqltext
WHILE @@FETCH_STATUS = 0
    BEGIN
        SELECT TEXT
        FROM sys.dm_exec_sql_text(@sqltext)
        FETCH NEXT FROM MyCursor INTO @sqltext
    END
CLOSE MyCursor
DEALLOCATE MyCursor;
GO

我希望这是您正在寻找的。

于 2016-02-18T10:56:42.903 回答