查看使用sp_prepare准备的SQL

查看使用sp_prepare准备的SQL,sql,sql-server,Sql,Sql Server,我正在对一个使用SQL Server数据库的应用程序进行故障排除,我看到很多sp\u执行的调用 我似乎找不到sp\u prepare呼叫 如何检查内存中所有准备好的SQL语句?在我上面的评论之后,我找到了一些相关链接: 微软有文档,但它可能是一个挑战性的拼凑东西(一如既往)。如果已知计划句柄,则可以使用: 这是一个表值函数。您可以看到,它利用这些表值函数来检索已编译(准备)计划的有效句柄的对象依赖关系。我正在寻找一种方法来查看SQL Server 2008 R2探查器中sp_执行的实际S

我正在对一个使用SQL Server数据库的应用程序进行故障排除,我看到很多
sp\u执行的调用

我似乎找不到
sp\u prepare
呼叫


如何检查内存中所有准备好的SQL语句?

在我上面的评论之后,我找到了一些相关链接:

微软有文档,但它可能是一个挑战性的拼凑东西(一如既往)。如果已知计划句柄,则可以使用:


这是一个表值函数。您可以看到,它利用这些表值函数来检索已编译(准备)计划的有效句柄的对象依赖关系。

我正在寻找一种方法来查看SQL Server 2008 R2探查器中sp_执行的实际SQL语句


为此,我创建了一个新的跟踪,并单击“事件选择”选项卡。我选择了“显示所有事件”,并选中了存储过程>SP:StmtCompleted。运行跟踪之后,我可以看到实际的SQL语句。

我也遇到了这个问题。SQL探查器未捕获
sp_prepare
语句,因为它发生在SQL探查器跟踪开始运行之前。依赖于
sys.dm_exec_sql_text
的各种过帐没有帮助,因为我找不到为该存储过程提供的正确
sql_句柄
plan_句柄

我从中找到了一个解决方案:在SQL Profiler中,单击“显示所有事件”复选框,然后在“存储过程”标题下选择“SP:CacheHit

在生成的SQL分析器输出中,您将看到一个“SP:CacheHit”行,其中包含“RPC:Starting…SP_execute”语句附近的缓存SQL语句

然后,如果愿意,可以使用以下方法在SSMS中重建和重新执行完整的SQL语句:

exec sp_executesql @stmt=N'{statement from SP:CacheHit}', 
  @params=N'{parameter declaration from  SP:CacheHit}',
  @param1={value}, {...parameters from RPC:Starting sp_execute statement}

你真的在使用sql事件探查器吗?在跟踪文件中执行的
sp_
调用比准备的
sp_
调用多得多。至于查找绑定到准备好的句柄的(参数化)SQL,我将查看SQL Server系统表的模式,查找名为“句柄”或“查询计划”之类的列。