我创建了一个简单的.Net Web服务,它运行一个非常简单的查询(通常应该很快)。查询是这样的:.Net 2.0和SQL Server 2008挂起过程
SELECT v.email
FROM dbo.Reporting r
INNER JOIN dbo.Reporting_EmailList el ON r.reportID = el.reportID
INNER JOIN OtherDB.dbo.V_ActiveDir v ON el.userGUID = v.objectGUID
WHERE r.reportID = @reportID
V_ActiveDir是活动目录数据的视图。这个查询基本上给我一个电子邮件地址列表,其中报告应该通过电子邮件发送到。我的报表目前只有3条记录。我试图将字段添加到报表中,但它一直在持续,这是我如何发现此查询挂在SQL进程中。当天早些时候,该脚本生成以下错误:
Timeout expired. The timeout period elapsed prior to completion
of the operation or the server is not responding.
...这解释了悬挂过程,我认为。我们试图杀死它,但现在它处于回滚状态,我想我们可能不得不重新启动sql server(在我看来,选择查询会尝试回滚的奇怪)。有没有办法与SQL服务器或.NET来防止再次发生?或者我可以删除这个过程在SQL中的一种方式...是否有可能挂在线程池?我仍然可以从报表中选择所以没有表锁,只有当我试图改变这个表时,它才会旋转它的轮子。
我对IIS没有太多经验,因为我没有访问权限,但如果有建议,我可以将其传递给您。
编辑:这可能是因为在我的catch语句中,我不检查SqlConnection是否打开,并且它是否关闭?