操作完成之前经过的超时时间或服务器没有响应

Vel*_*elu 3 sql database sql-server-2005

我们有生产服务器数据库和Widnows客户端项目.突然,我们在查询数据库时遇到此错误.

"在完成操作之前已经过了超时时间,或者服务器没有响应"

我们如何从数据库端/ C#Windows解决这个问题?

谢谢,Velusamy

And*_*mar 5

快速而肮脏的答案:设置SqlCommand.CommandTimeout为更高的值.

答案很长:

  • 在SSMS中运行查询并打开"显示实际执行计划".检查索引提示的结果.
  • 检查数据库服务器日志中是否有可疑事件
  • 验证统计信息是否已过期

此查询显示统计信息的年龄:

SELECT  Object_Name(ind.object_id)
,       ind.name
,       STATS_DATE(ind.object_id, ind.index_id) 
FROM    SYS.INDEXES ind 
Run Code Online (Sandbox Code Playgroud)

查询优化器在选择如何执行查询时使用统计信息.如果统计数据是旧的,它可能会(确实)做出错误的选择.