2014-06-11 111 views
2

我正在使用MSSQL Server 2008.我必須與幾個數據庫一起工作。當插入更新記錄時,系統給出錯誤「事務超時」。但它幾分鐘後就可以工作。
很少有用戶使用差異窗口應用程序操縱數據庫中的數據。
我想知道, 這個問題和多個數據庫的使用有什麼關係嗎? enter image description here 這種查詢類型(在查詢中鏈接多個數據庫)是否會影響Timeout?MSSQL超時錯誤

+0

你是直接使用它還是通過某種客戶端應用程序? –

+0

使用客戶端應用程序。有幾個客戶端應用程序。 – tishantha

+0

C#一個? Java? –

回答

1

高度依賴於超時的原因。當資源被一個應用程序鎖定並且第二個應用程序等待時間過長時,通常會導致這種情況。即使在單一實例中,多個數據庫也使用Distibuted Transaction Coordinator。

數據庫引擎的單個實例中跨越兩個或更多數據庫的事務實際上是分佈式事務。 實例內部管理分佈式事務;給用戶, 它作爲本地交易運行。 http://technet.microsoft.com/en-us/library/jj856598(v=sql.110).aspx

而且DTC比在同一個數據庫的範圍工作慢得多,所以它會導致數據被鎖定爲更廣泛的時間表,並可能導致超時。

1

如果您使用的是SqlConnection,SqlCommandTransaction您可能需要檢查並設置每個這些超時屬性以正確管理您的應用程序行爲。

IsolationLevelTimeOutTransactionOptions(第一個這倆是Required

SqlCommand.CommandTimeout如果你使用的命令。

使用交易可能是

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

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

請記住,很多併發事務處理可能會影響SQL Server的效率的好方法。也許你需要同一臺服務器的不同實例才能正確使用它,但缺點是每個實例都有同步。