【问题标题】:SQL Server session queriesSQL Server 会话查询
【发布时间】:2016-05-30 06:52:41
【问题描述】:

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

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

有什么帮助吗?

【问题讨论】:

    标签: performance tsql transactions sql-server-2008-r2 transactional-queue


    【解决方案1】:

    我可能找到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
    

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

    【讨论】:

    • 对不起,这也是关于会话的最后执行查询,我正在查找特定会话中的所有查询
    • 实际上你是部分正确的,因为当我按 spid 和计数查询分组时,它给了我超过 1 个 spid ID 计数,但是当我直接搜索它时,它返回 1 个结果
    猜你喜欢
    • 2021-05-25
    • 2012-03-22
    • 1970-01-01
    • 2016-04-25
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多