我面临一个问题,使我无法继续我所处的C#开发:我只是不能在C#应用程序上使用C#与我的VisualStudioCommunity2019(它在2015年版本上可以正常工作),尽管它在同一个平台上运行得很好,一个基于相同C#类的web应用程序。
我必须准确地说,我已经有一年多没有开发了,所以我担心我可能已经忘记了一件非常琐碎的事情,但尽管我试图找出我没有看到我可能忘记了什么。
以下是事实:
。我的开发机器叫XWAD8044
。域有一台专用于甲骨文的服务器机器,称为ORA025。
。该服务器上的Oracle实例名为ORA025 (与服务器机器本身的名称相同)
。我想找到一个名为CARL的模式,它的密码是CARLPWD,它是在ORA025实例上创建的,
。在XWAD8044机器上,有一个包含以下实例的TNSNAMES.ORA文件:
ORA025 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ORA025)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORA025)
)
)以下所有指令在XWAD044上都能很好地工作:
ping ORA025 -> OK
tnsping ORA025 -> OK
sqlplus CARL/CARLPWD@ORA025 -> OK, SQLPLUS session starts on the CARL schema
select * from increments -> OK, all the lines of the CARL.INCREMENTS table are listed in the console.这证明了XWAD044和ORA025之间的连接是完全可行的。
然后使用以下字符串打开连接:
User Id=CARL;Password=CARLPWD;Data Source=ORA025在我的应用程序中,我引用了ORACLE.MANAGEDDATAACCESS.DLL (我只是将它从多年来使用的ORACLE.DATAACCESS.DLL中更改,但这导致了昨天的失败)
所以问题是,DLL似乎不想使用TNSNAMES.ORA,因为当我试图在卡尔模式上打开一个连接时,我会得到以下错误:
ORA-12504: TNS: listener was not given the Service_name in connect_data在我看来,这条消息证明Oracle被C#进程嵌入得很好,否则我不会从Oracle实例中获得任何消息,但是它似乎不使用TNSNAMES条目,因为SERVICE_NAME是在ORA025条目中提供的。
有人能告诉我如何解决这个问题吗?
提前谢谢。
发布于 2021-09-11 14:37:10
最后,我可以通过使用"EZconnect“方法,将服务器名添加到实例名称(这里的2个名称类似),从而替换了:
User Id=CARL;Password=CARLPWD;Data Source=ORA025出自:
User Id=CARL;Password=CARLPWD;Data Source=ORA025/ORA025这样,Oracle.ManagedDataAccess.Client终于能够找到我的Oracle了。
https://stackoverflow.com/questions/69142156
复制相似问题