Pau*_*aul 5 c# sql sql-server timeout execution-time
我有一个简单的SQL查询,当从C#运行时需要超过30秒,然后每次超时,而在SQL Server Management Studio上运行时立即成功完成.在后一种情况下,查询执行计划不会显示任何麻烦,并且通过一些简单的操作可以很好地传播执行时间.
我EXEC sp_who2在查询从C#运行时运行' ',它被列为占用29,000毫秒的CPU时间,并且没有被任何东西阻止.
我不知道如何开始解决这个问题.有没有人有一些见解?
查询是:
SELECT
c.lngId,
...
FROM tblCase c
INNER JOIN tblCaseStatus s ON s.lngId = c.lngId
INNER JOIN tblCaseStatusType t ON t.lngId = s.lngId
INNER JOIN [Another Database]..tblCompany cm ON cm.lngId = cs.lngCompanyId
WHERE t.lngId = 25
AND c.IsDeleted = 0
AND s.lngStatus = 1
Run Code Online (Sandbox Code Playgroud)
首先,从C#运行时提取查询的查询计划:
select p.query_plan, *
from sys.dm_exec_requests r
cross apply sys.dm_exec_query_plan(r.plan_handle) p
where r.session_id = <spid of C# connection>
Run Code Online (Sandbox Code Playgroud)
然后将其与在SSMS会话下执行的计划进行比较(只需单击工具栏中的显示实际计划).
并且,作为一般规则,总是尝试应用有条理的方法而不是猜测.Wait and Queues是一种非常好的,经过验证的SQL Server性能故障排除方法.
| 归档时间: |
|
| 查看次数: |
3190 次 |
| 最近记录: |