只是好奇,如果有其他人有这个特殊的错误,知道如何解决它?
情况如下:
我们有一个ASP.NET Web应用程序使用在Windows Server 2008 IIS场上运行的Enterprise Library连接到sql Server 2008群集后端。
MSDTC已打开。数据库连接汇总。
我的怀疑是,线上某处有一个失败的MSDTC事务,连接已经返回到池,而另一个页面上的下一个查询正在拾起不正常的连接,并得到这个特定的错误。有趣的是我们在一个不需要分布式事务(提交到两个数据库等)的查询上得到这个错误。当我们收到错误时,我们只做了select query(无事务)。
我们做了sql Profiling,查询运行在sql Server上,但是从来没有回过头(因为MSDTC事务已经在连接中中断了)。
伴随的其他一些相关错误是:
>新请求不允许启动
因为它应该有效
事务描述符。
>内部.Net框架数据提供者错误60。
解决方法
赏金可能有助于获得您所寻求的答案,但如果您提供一些代码示例,并且更好地描述错误发生时,您可能会获得更好的答案。
错误是否间歇性发生?这听起来像你的描述。
您是否在Microsoft建议的使用TransactionScope块中封闭要作为事务完成的关闭?这应该有助于避免奇怪的交易行为。回想一下,使用块确保对象始终被处理,而不管抛出异常。见:http://msdn.microsoft.com/en-us/library/ms172152.aspx
如果您使用TransactionScope,则有一个参数System.TransactionScopeOption.RequiresNew,它告诉框架始终为此代码块创建一个新事务:
06000
此外,如果您怀疑连接发生故障,然后重新连接到连接池,则可能的解决方案是将连接错误的代码包含在Try-Catch块中,并将该连接置于catch块中。