RT,我想在某条SQL执行超时后,通过程序去获取它的执行计划,有没具体可行的方式?
目前我考虑的方式是:
1.c#程序获取当前执行sql的sql_handle
2.再通过sqlhandle去查询它具体的执行计划
select q.sql_handle, s.text,p.query_plan from sys.dm_exec_query_stats q
CROSS APPLY sys.dm_exec_sql_text(q.sql_handle) s
CROSS APPLY sys.dm_exec_query_plan(q.plan_handle) p
where q.last_execution_time BETWEEN '2014-7-1' AND '2014-8-1'
AND q.sql_handle = 0x0300FF7F707FF100E47E3800059F00000100000000000000
补充说明:其实我的用意很简单,有条SQL偶尔异常超时,我想捕捉它的执行计划
------解决方案--------------------
你如果知道是哪个语句,就可以在SQL Server中获取
------解决方案--------------------
有条SQL偶尔异常超时。你是怕捕捉不到那条带有传值的超时语句么。
可以在客户执行这条语句时,先把sql语句 插入到你一张日志表里面,记录好时间,客户信息。在执行你这个sql语句。类似加了sqlprofiler这个功能。
后面找原因也方便!
------解决方案--------------------
有 C# 的异常消息,确定是多用户并发时容易异常。
基本上可以直接定性分析原因了。
如10楼所说,优化之。