MSSQL超时错误

时间:2014-06-11 06:32:06

标签: c# sql sql-server sql-server-2008 tsql

我正在使用MSSQL Server 2008.我必须一次使用多个数据库。系统会给出一些错误"交易超时"当插入更新记录时。但它会在几分钟后发挥作用 很少有用户使用差异Windows应用程序来操纵数据库中的数据 我想知道, 这个问题和多个数据库使用之间有什么关系吗? enter image description here 此查询类型(查询中链接的多个数据库)是否会影响超时?

2 个答案:

答案 0 :(得分:1)

高度取决于超时的原因。当资源被一个应用程序锁定而第二个应用程序等待时间过长时,通常会导致这种情况。即使在单个实例中,多个数据库也在使用Distibuted Transaction Coordinator。

  

数据库引擎的单个实例中的事务   跨越两个或多个数据库实际上是分布式事务。该   instance在内部管理分布式事务;给用户,   它作为本地交易运作。   http://technet.microsoft.com/en-us/library/jj856598(v=sql.110).aspx

并且DTC比在同一数据库范围内工作慢得多,因此它会导致数据锁定的时间范围更广,并可能导致超时。

答案 1 :(得分:1)

如果您正在使用SqlConnectionSqlCommandTransaction,则可能需要检查并设置每个超时属性,以便正确管理您的应用行为。

请参阅TransactionOptions了解IsolationLevelTimeOut(第一个可能必须是Required

如果您正在使用命令,请参阅SqlCommand.CommandTimeout

使用交易的好方法可能是

TimeSpan timeout = TimeSpan.FromSeconds(300); // 5 minutes

using(TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, timeout))
{
        // Code ...
}

请记住,许多并发事务可能会影响SQL Server效率。也许您需要同一服务器的不同实例才能正确使用它,但缺点是每个实例同步。