【发布时间】:2012-11-09 15:26:16
【问题描述】:
我们有一个程序连接到我们的数据库并运行一些存储过程来获取一些数据。
数据库是 SQL Server 2008,程序在本地运行。连接是通过 TCP/IP,但启用了共享内存。并且连接字符串的超时时间设置为45秒。
当我们通过 SQL Server Management Studio 运行它们时,运行需要 0-5 秒。 当我们通过代码运行它时,它会随机超时。
为了进行一些测试,我们将超时时间从 45 秒增加到几分钟。并且为了放弃任何阻塞问题,我们检查了存储过程仅“选择”数据(没有插入或更新语句)。我们已经为 select 语句尝试了几种表修饰符,例如:nolock、readpast、...
我还检查了sp_who2 和dbcc opentran() 并且没有任何内容被阻止......并且.Net 的SPID 是running command ...。有关 .Net 等待 DB 回答时的更多详细信息,通过 SQL Server Management Studio,我可以毫无问题地运行相同的语句(存储过程或选择)。
对正在发生的事情有什么建议吗?
【问题讨论】:
-
您是在调用 SqlConnection.Open() 时还是在实际执行查询的调用时收到 SqlException?
-
SqlException 代码返回超时。但问题是查询似乎不是由 SQL Server 执行的(尽管
sp_who2显示running command) -
我没有问这个。我问哪行代码引发了异常。这将帮助我们确定失败的原因。
-
请尽可能多地包含异常消息中的实际文本。可能有几种不同的东西都说超时。
-
请发布.NET和一个问题SP
标签: c# .net sql-server timeout sqlclient