运行存储过程时无法解释的超时

Suy*_*dwe 5 c# sql sql-server asp.net sql-server-2008-r2

背景 - 我有一个网站和一个Windows预定作业,它是MSI的一部分,并安装在同一台服务器上.最终用户使用该网站创建一些规则,并且计划每天运行该作业,以便为最终用户创建的规则创建平面文件.实际情况比上面解释的更复杂.

问题(与网站) - 网站大部分时间都工作正常,但有时它只是不会加载规则创建页面 - 并记录它的异常'查询超时或SQL服务器没有响应'

问题(有了这个工作) - 这个工作就像网站一样,并且有一些时候会失败 - 例外情况 - "查询超时或SQL服务器无响应"

我试过的 -

  • 我已经将"连接超时"添加到SQL连接字符串中 - 似乎对日志记录没有帮助 - 这会告诉我它是SQL连接超时还是查询超时.
  • 我还运行由网站和作业调用的存储过程 - 并且所有存储过程在业务定义的超时3600秒内完成.存储过程实际上在一分钟内完成.
  • 我也运行SQL分析器 - 但TRACES也没有帮助我 - 虽然我可以看到很多交易,但我不能证明服务器出错了.

我寻求什么 - 有任何其他原因可能导致这种情况吗?有什么我可以寻找的吗?

技术 - SQL Server 2008 R2,ASP.Net,C#.Net

限制 - 由于客户机密性,代码详细信息无法显示,但我对问题持开放态度 - 我会尽量回答这些问题,并牢记客户的机密性.

- 应用程序配置文件中已定义查询超时(3600s)和连接超时(30s).

Suy*_*dwe 1

因此,我到处尝试了一些方法,并找出了根本原因 -

SQL 存储过程正在连接来自 2 个不同数据库的 2 个表 - 其中一个数据库具有不同数量的记录 - 这些记录由不同的(第 3 方)作业更新/插入。由于第 3 方工作的时间和我的工作时间不同 - 由于表锁而没有出现问题,但是当我的超时时间不够时,记录量巨大导致我的工作超时。

但是,正如我所说,我已经给了 3600 秒的业务标准命令超时 - 不知何故,企业库用它自己的默认命令超时 30 秒覆盖了我的自定义超时 - 因此,C# 代码部分甚至在存储之前就会抛出异常。程序已完成执行。

我所做的 - 这可能对我们中的一些人有帮助 -

  1. 我从项目中删除了 Enterprise Library 的引用
  2. 清理我的解决方案并签入 SVN。
  3. 然后也清理了 SVN。
  4. 删除企业库引用后,我没有构建应用程序 - 显然,由于引用错误,它不会构建。
  5. 之后,我进行了彻底的检查并再次添加了企业库。

现在,即使记录数量不同,它似乎也能工作。