【问题标题】:How do I view executed queries within SQL Server Management Studio?如何在 SQL Server Management Studio 中查看已执行的查询?
【发布时间】:2011-01-27 19:45:41
【问题描述】:

我是 SQL Server Management Studio 的新手,我想知道:有没有办法查看对数据库运行了哪些查询?

在活动监视器中,有一个“最近的昂贵查询”报告,但我猜这不是所有查询,因为我没有看到我运行的查询。

我正在运行 SQL Server Express 2008 v 10.0.1600.22。

【问题讨论】:

  • 下面现在删除的答案指向this blog entry,它显示了一个 SQL 查询以显示最新的 SQL 查询。

标签: ssms sql-server-express


【解决方案1】:

使用SQL Profiler 并对其使用过滤器以获取最昂贵的查询。

【讨论】:

  • 我忘了说这是 SQL Server Express。从阅读其他帖子来看,Profiler 似乎不包含在 Express 中。这仍然正确吗?
  • 是的,它仅包含在 Enterprise、Standard 和 Workgroup 版本中。您可以在此处比较此功能和其他功能:microsoft.com/sqlserver/2008/en/us/editions-compare.aspx
【解决方案2】:

使用活动监视器。它是顶部栏中的最后一个工具栏。它将向您显示“最近的昂贵查询”列表。可以双击查看执行计划等。

【讨论】:

  • +1 告诉我们隐藏的功能在哪里以及如何使用它。
【解决方案3】:

如果您想查看已执行的查询,则不支持执行此操作的默认方式。您可以尝试一些解决方法,但不要期望找到所有解决方法。

您无法确定看到 SELECT 语句,但有一种方法可以通过读取事务日志来查看其他 DML 和 DDL 命令(假设数据库处于完全恢复模式)。

您可以使用 DBCC LOG 或 fn_dblog 命令或第三方日志阅读器(如 ApexSQL Log)来执行此操作(请注意,该工具需要付费)

现在,如果您计划审计将来要执行的语句,那么您可以使用 SQL Profiler 来捕获所有内容。

【讨论】:

    【解决方案4】:

    您需要一个 SQL 分析器,它实际上在 SQL Management Studio 之外运行。如果您有 SQL Server 的付费版本(如开发人员版),它应该作为另一个实用程序包含在其中。

    如果您使用的是免费版本 (SQL Express),他们有免费软件配置文件供您下载。我使用过 AnjLab 的分析器(可在 http://sites.google.com/site/sqlprofiler 获得),它似乎运行良好。

    【讨论】:

      【解决方案5】:

      从 Management Studio 对正在运行的进程运行以下查询:

      DBCC inputbuffer( spid# )
      

      这将返回当前针对所提供 SPID 的数据库运行的 SQL。请注意,您需要适当的权限才能运行此命令。

      这比运行跟踪要好,因为它针对特定的 SPID。您可以根据它的 CPUTime 和 DiskIO 来查看它是否长时间运行。

      获取 SPID 64 详细信息的示例:

      DBCC inputbuffer(64)
      

      【讨论】:

        【解决方案6】:
             SELECT *  FROM sys.dm_exec_sessions es
          INNER JOIN sys.dm_exec_connections ec
              ON es.session_id = ec.session_id
          CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) where es.session_id=65 under see text contain...
        

        【讨论】:

        • 您只能获得在 ssms (sql management studio) 中运行的 sql,但无法捕获在任何 dotnet 应用程序目标 ado.net 中运行的 sql。只有 sql profiler 才能做到。
        【解决方案7】:

        如果您希望 SSMS 维护查询历史记录,请使用 SSMS Tool Pack add on

        如果您想监视 SQL Server 以查看当前正在运行的查询,请按照其他人的建议使用 SQL PROfiler。

        【讨论】:

          【解决方案8】:

          更清晰的查询,针对 Studio sql 查询是:

          SELECT text  FROM sys.dm_exec_sessions es
            INNER JOIN sys.dm_exec_connections ec
                ON es.session_id = ec.session_id
            CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) 
            where program_name like '%Query'
          

          【讨论】:

          • 您只能在 ssms (sql management studio) 中运行 sql,但如果更改 program_name,则无法捕获在任何 dotnet 应用程序目标 ado.net 中运行的 sql。只有 sql profiler 才能做到。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-07-15
          • 1970-01-01
          • 2010-10-27
          • 2022-01-14
          • 2022-08-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多