我有一个应用程序可以同时连接到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