You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中记录存储过程执行的所有SQL查询

记录存储过程执行的所有SQL查询方法

SQL Server

  • 用SQL Server Profiler捕获:新建跟踪,选择「SQL:BatchCompleted」和「SP:StmtCompleted」事件,设置过滤条件匹配目标存储过程名称,启动跟踪后就能捕获所有执行的SQL语句。
  • 用Extended Events收集:创建会话,添加sql_statement_completed事件,设置筛选器object_name等于你的存储过程名,启动会话后即可收集执行的SQL内容。
  • 手动添加输出语句:如果存储过程包含动态SQL,在执行前插入PRINT @动态SQL变量或SELECT @动态SQL变量;静态语句也可按需添加PRINT输出。

MySQL

  • 临时开启通用日志:执行SET GLOBAL general_log = ON;,运行存储过程后关闭日志(SET GLOBAL general_log = OFF;),日志文件会记录所有执行的SQL,注意生产环境不可长时间开启,避免影响性能。
  • 查询Performance Schema:确保statement_events表已启用,执行SELECT SQL_TEXT FROM performance_schema.events_statements_history WHERE OBJECT_NAME = '你的存储过程名';即可获取执行过的语句。
  • 手动输出内容:动态SQL执行前用SELECT @dyn_sql;输出,静态语句可按需添加SELECT打印。

Oracle

  • 用DBMS_OUTPUT输出:在存储过程对应位置添加DBMS_OUTPUT.PUT_LINE('执行SQL:' || sql_text);,执行前先运行SET SERVEROUTPUT ON;,控制台就能看到输出内容。
  • 开启SQL Trace:执行ALTER SESSION SET SQL_TRACE = TRUE;,运行存储过程后关闭跟踪,生成的跟踪文件用TKPROF工具分析,可得到所有执行的SQL语句。
  • 查询AWR报告:若存储过程已执行过,生成AWR报告可找到相关SQL,但该方式更偏向性能分析,非实时捕获。

内容的提问来源于stack exchange,提问作者Mohammed Chanaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:51:24