0

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

有没有一种方法可以访问在会话中运行的所有查询,而不是SQL Server分析器,因为在制作环境中使用分析器并不那么容易。

有帮助吗?

回答

0

我可能找到here解决您的问题。我添加了一个光标让所有查询特定会话:

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 

我希望这是你要搜索的内容。

+0

对不起,但这也是关于上次执行的会话查询,我正在寻找特定会话中的所有查询 – canpoint

+0

实际上你是部分正确的,因为当我通过spid查询group并且使用count时,它给了我更多1计数为spid ID,但当我直接搜索它时,它返回1结果 – canpoint