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