SQL Server 2019:如何查看执行的 SQL

在数据库管理中,了解和分析执行的 SQL 查询是非常重要的。在 SQL Server 2019 中,有多种方法可以查看和监控正在执行的 SQL 查询。本文将为您详细介绍几种方法,并附上代码示例。

1. 使用 sys.dm_exec_requests

sys.dm_exec_requests 视图提供了当前正在执行的 SQL 请求的相关信息。可以通过以下 SQL 查询来查看:

SELECT
    session_id,
    status,
    command,
    cpu_time,
    total_elapsed_time,
    blocking_session_id,
    wait_type,
    wait_time,
    wait_resource
FROM
    sys.dm_exec_requests
WHERE
    session_id > 50; -- 忽略系统会话

这段代码可以让您看到正在执行的请求,包括 CPU 消耗、等待时间等信息,便于进一步分析。

2. 使用 sys.dm_exec_sql_text

为了获取正在执行的 SQL 查询文本,可以结合 sys.dm_exec_requestssys.dm_exec_sql_text 视图。以下是一个示例:

SELECT
    r.session_id,
    r.status,
    r.command,
    r.cpu_time,
    r.total_elapsed_time,
    t.text AS sql_text
FROM
    sys.dm_exec_requests r
CROSS APPLY
    sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE
    r.session_id > 50; -- 忽略系统会话

这个查询将返回每个请求的详细状态,同时显示对应的 SQL 语句。

3. 使用 SQL Server Profiler

SQL Server Profiler 是一款强大的工具,可以实时监控正在执行的 SQL 语句。使用 Profiler 时,可以创建一个新的跟踪,选择感兴趣的事件类型,如:

  • TSQL:SQL:BatchCompleted
  • TSQL:SQL:BatchStarting
  • TSQL:RPC:Starting
  • TSQL:RPC:Completed

通过这些事件,您可以监控 SQL 查询的执行情况。

ER 图示意

下面是一个 ER 图示意,展示了 SQL 查询执行和数据库表的关系。

erDiagram
    SQL_TEXT {
        string text
        int session_id
    }
    EXEC_REQUEST {
        int request_id
        int cpu_time
        string status
    }

    SQL_TEXT ||--o{ EXEC_REQUEST: executes

结尾

通过上述方法,您可以有效地查看和分析 SQL Server 2019 中执行的 SQL 查询。这对数据库性能监控和优化非常有帮助。无论是使用 DMV 视图还是 SQL Server Profiler,了解 SQL 查询执行的情况都能帮助您更好地进行数据库管理。在进行 SQL 优化时,了解查询的执行情况是不可或缺的一步,因此建议您时常关注这些信息,以提升数据库的性能与稳定性。希望本文对您有所帮助!