2017-04-18 42 views
0

今天,我們在運行我們的應用程序中最關鍵的進程之一時發生了一個客戶的緩慢和低速RAM計算機中發生的「傳輸級錯誤已發生」的死亡錯誤。SET MULTI_USER發生運輸級錯誤

看着SQL日誌文件我看到SET MULTI_USER是錯誤發生前的最後一個成功語句。

當我查看代碼時,我可以看到我們運行了多個腳本,然後我們將數據庫更改爲單用戶模式以運行更多腳本,然後我們將其重新設置爲多用戶模式。喜歡的東西:

ALTER DATABASE AdventureWorks2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 
GO 
-- Critical Operation 
GO 
ALTER DATABASE AdventureWorks2012 SET MULTI_USER; 

這個腳本,我們將調用數據庫與其它腳本來選擇表或做其他的東西之後,但接下來的腳本失敗「發生傳輸級錯誤」的

什麼在這個查詢之後避免錯誤的最好方法是什麼?

+0

你是說單用戶是由sql自己設置的,沒有用戶干預? – maSTAShuFu

+0

不,我們將其設置爲Single_User以確保在我們運行某些關鍵操作時沒有人使用該系統。 – TheBigSot

回答

0

原來,在腳本解決問題後立即調用以下代碼。

SqlConnection.ClearAllPools(); 

我不知道爲什麼這隻發生在100個客戶中,但是這解決了問題。 ClearAllPools重置(或清空)連接池

+0

我想發佈這個問題和答案,因爲是一個非常具體的案例和非常具體的問題答案。當我看到其他類似的問題時,他們並不像我的問題那麼具體。現在我知道如果在Set Multi_User之後看到「Transport-Level」錯誤,該怎麼辦 – TheBigSot