随笔 - 229  文章 - 2  评论 - 511  阅读 - 84万

如何找到sql语句对应的存储过程?

大量的存储过程中包含有动态sql,这样的存储过程每次遇到不同的参数都会产生一个新的执行计划,一个时间段内plan cache内包含大量的执行计划,虽然很多都对应同一个存储过程.http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/5bd1c44a-c4ea-44e4-9e5d-f03e8719ce7c
下面这个查询可以返回产生多个执行计划的sql(仅对sql server 2008有效,引自Troubleshooting Performance Problems in SQL Server 2008)

复制代码
代码
select q.query_hash, 
 q.number_of_entries, 
 t.
text as sample_query, 
 p.query_plan 
as sample_plan
from (select top 20 query_hash, 
   
count(*as number_of_entries, 
   
min(sql_handle) as sample_sql_handle, 
   
min(plan_handle) as sample_plan_handle
  
from sys.dm_exec_query_stats
  
group by query_hash
  
having count(*> 1
  
order by count(*descas q
 
cross apply sys.dm_exec_sql_text(q.sample_sql_handle) as t
 
cross apply sys.dm_exec_query_plan(q.sample_plan_handle) as p
复制代码

 

现在新的问题出现了,虽然找到了需要改进的t-sql语句(去除动态的方式),但无法找到这些t-sql对应的是哪个存储过程:(
posted on   stswordman  阅读(514)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
< 2010年10月 >
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

点击右上角即可分享
微信分享提示