2010-09-22 96 views
1

我有一個使用LinqToSql的Winform應用程序,因爲它是DAL。有一箇中央SQL數據庫,每檯筆記本電腦都有一個本地SQLExpress數據庫。使用合併複製的單獨模塊使兩者保持同步。當連接失去中央數據庫時,它會'故障'到本地。這很好。立即重新連接的SQL異常

然而,當我恢復連接如到中央數據庫中,如果時間還沒有真正的長,我得到下面的異常 - >

A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)

我已經通過無數的帖子在這裏讀SO與此有關,甚至是這個msdn article,詳細地概述和解釋了什麼是錯誤的,通過所有這些,我還沒有找到或閱讀解決方案。

我想知道別人怎麼處理這個。我很難相信我在這裏踏上了新的一步。有沒有辦法在重新連接時刪除我的舊連接?

我在這失去了頭髮,所以任何洞察力讚賞。

編輯

另外值得注意的是,我很積極的,我所有的Data Contexts被包裹在一個using和我沒有任何「長期」上下文。

+0

只是一個建議:嘗試禁用連接池。當你「關閉」一個ado.net連接時,它不會實際關閉,它會返回到連接池,以便稍後重用它。 – CodingGorilla 2010-09-22 19:13:58

+0

當然,是每個連接的東西或服務器的東西?我相信我會找到它。 – 2010-09-22 19:23:33

+1

這是一個可以添加到連接字符串本身的設置,只需添加:Pooling = false。 – CodingGorilla 2010-09-22 21:09:35

回答

1

使用「Pooling = false」連接字符串屬性關閉連接池似乎解決了問題。