2011-12-19 80 views
4

我追蹤庫中的一個錯誤,我沒有自己寫。在ASP.NET中使用此庫時,我得到db連接錯誤,因爲當使用相同的連接字符串打開第二個連接時,SQLConnection似乎會關閉。使用相同的連接字符串打開兩個SQLConnections

這是記錄的行爲?可以使用相同的連接字符串打開新的SQLConnection關閉另一個SQLConnection對象嗎?

從調試,這似乎是我的問題最可能的原因,但我無法找到任何網絡上支持我的理論。

+0

找到這個的簡單方法是對new這個詞做一個搜索,它可能會被再次創建..這個連接可以是一個屬性或靜態字符串,通過代碼打開和關閉..只創建一次..或添加代碼將檢查Connection.State ..郵政編碼,您正在創建它..以及它正在關閉或連接狀態關閉的代碼 – MethodMan 2011-12-19 14:56:27

+1

這應該可以正常工作。該問題更可能是跨請求重新使用連接。 – SLaks 2011-12-19 14:58:55

+0

@DJ KRAZE:我已經找到使用同一個連接字符串打開第二個連接的部分。正如我寫的,我想知道它是否正常,這關閉了第一個連接。 – magnattic 2011-12-19 14:59:04

回答

3

不,會發生的是,當您調用SqlConnection.Open()方法時,即使使用相同的連接字符串參數,它也會執行以下兩項操作之一:重新使用池中未使用的連接或創建新連接。無論哪種方式,您都將導致SQL Server的非衝突SPID。

0

簡而言之,使用相同的連接字符串打開新的連接將不會關閉您的現有連接。但是...通過創建對新連接的新引用來重用已經存在的對象將會破壞連接。

+0

對不起,我不明白最後一句話,你能解釋一下你的意思嗎?如何通過創建對新對象的新引用來重用對象? – magnattic 2011-12-19 15:04:39

+0

是的,如果我有:SqlConnection conn = new SqlConnection(someconnstring); conn = new SqlConnection(someconnstring); ...然後我的原始連接對象將被新的覆蓋。 – 2011-12-19 15:11:50

+0

@Lynn粉碎:這不是重用現有的對象。此外,這不一定會終止連接。 – jason 2011-12-19 15:12:51

3

這是記錄的行爲?

可以打開具有相同的連接字符串的新的SQLConnection關閉另一個SQLConnection對象?

需要注意的是,除非你已經修改了設置,SQL Server允許32,767個併發連接。但即使如此,這也不能解釋你所看到的行爲。