我正在对使用SQL Server数据库的应用程序进行故障排除,我看到很多sp_execute调用.
我好像无法找到sp_prepare电话.
如何检查内存中所有准备好的SQL语句?
Fre*_*edL 13
我一直在寻找一种方法来查看SQL Server 2008 R2 Profiler中sp_execute执行的实际SQL语句.
为此,我创建了一个新的跟踪,并单击了"事件选择"选项卡.我选择了"显示所有事件"并选中了存储过程> SP:StmtCompleted.运行跟踪,然后我能够看到实际的SQL语句.
我也遇到过这个问题.SQL事件探查器未捕获该sp_prepare语句,因为它发生在SQL事件探查器跟踪开始运行之前.依赖的各种帖子sys.dm_exec_sql_text没有帮助,因为我找不到提供该存储过程的正确值sql_handle或plan_handle值.
我从这篇博文中找到了一个解决方案:在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}
Run Code Online (Sandbox Code Playgroud)
根据我上面的评论,我发现了一些相关链接:
如何找出 sp_execute 正在运行什么命令(不使用 Profiler)
微软有文档,但将这些东西拼凑在一起可能是一个挑战(一如既往)。如果计划句柄已知,您可以使用:
sys.dm_exec_sql_text (Transact-SQL)
这是一个表值函数。您可以在此处查看一篇博客文章,该文章利用此类表值函数来检索已编译(准备)计划的有效句柄的对象依赖关系。
| 归档时间: |
|
| 查看次数: |
11658 次 |
| 最近记录: |