我有一個應用程序可以同時連接到SQL和Oracle數據庫。 Oracle連接多次拋出此異常。我做了搜索,發現這個鏈接Oracle ORA-12542:TNS:地址已經在C#中使用了
http://www.forumtopics.com/busobj/viewtopic.php?p=925784
它看起來像在Windows .NET問題以下
「[使用錯誤ORA-12542 TNS地址]造成因描述事實上,在Windows客戶端的空閒端口已經用盡,它正在嘗試使用處於TIME_WAIT狀態的端口,該端口給出錯誤TNS-12542:地址已在使用中。「
我的問題是:
1>是否有可能在.NET指定本地端口範圍進行連接,例如,其中一個端口範圍全身心地投入到SQL服務器的連接和端口到Oracle的另一範圍。
2>端口如何分配給.Net中的連接?所以,Time_Wait端口將不會被重新分配。
3>對於oracle連接,我的本地端口分配的端口號從非常高的數字開始,例如50000,但使用SQL Server連接時,我的本地端口從5000開始。爲什麼會這樣?
4>如何解決這個問題?
在此先感謝。
編輯:我們在SQLServer連接中也遇到超時異常。我認爲他們是相關的。
您使用了多少個端口?看起來你沒有正確關閉你的連接。 – Ben 2013-02-11 10:15:13
@Ben,大約50個端口用於SQLSever連接,10個用於Oracle連接,這不是一個非常大的數字。但是,Time_Wait狀態下的端口數量非常高,SQLSever連接數大約爲800,而Oracle數最多爲200。 – Helic 2013-02-12 16:28:42
你在使用連接池嗎?聽起來好像你可能關掉了它。系統應該爲大多數場景重用連接。或者,如果每個連接字符串不同(或在不同的用戶上下文中),連接池將無效。 – Ben 2013-02-12 16:43:23