【问题标题】:See what sp_execute is doing查看 sp_execute 在做什么
【发布时间】:2012-04-30 16:20:28
【问题描述】:

在我的 MS SQL Profiler 中,我看到了很多这样的小查询。

执行 sp_execute 1,@p0=15954

我知道这在理论上可行,它正在执行先前创建的查询并传入特定参数。但问题是我不确定是什么导致了这些查询。

有没有办法查看这些查询的 TSQL 内容?

【问题讨论】:

  • 您目前正在捕捉哪些事件?如果您正在为跟踪使用模板,您是否修改了事件或列?

标签: .net sql sql-server-2008 tsql


【解决方案1】:

在 Sql profiler 中,我使用 Event StoredProcedure>>SP:CacheHit。我在link 中读到了它。 捕获 SQL:StmtCompleted 和 RPC:Completed DIDNT 捕获 sp_execute 的参数

【讨论】:

  • RPC:Starting 和 SP:CacheHit 很好地结合在一起,因为您将获得传入的参数,并且在主查询的 CacheHit 中很好地声明了参数。喜欢!
  • 您可能需要选中显示所有事件复选框
【解决方案2】:

这看起来像是在运行一个准备好的查询。要做的一件事是查看探查器跟踪以查看是否可以找到生成此特定句柄的 sp_prepare 查询。

另一种选择是查询系统视图以查找底层文本。

如果它当前正在运行,这将为您提供查询

select text
    from sys.dm_exec_requests
    cross apply sys.dm_exec_sql_text(plan_handle)
    where session_id = <SPID FROM PROFILER>

【讨论】:

  • 通过编辑跟踪的属性,我能够看到 sp_prepare 语句,这对我有很大帮助。
  • 我也使用过 SQL Server Profiler。对我来说,我检查了跟踪属性的“存储过程”部分下的 SP:StmtStarting,然后运行跟踪,我可以在频繁的 sp_execute 调用下看到 TSQL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 2022-12-15
  • 2010-12-16
相关资源
最近更新 更多