我需要使用ASP.NET网站访问oracle服务器上的视图。如果我通过visual studio调试网站(在VS2012中按F5),它会工作,但当我转到我本地IIS(LocalHost /)上托管的版本时,我收到此错误:
Oracle.DataAccess.Client.OracleException: ORA-12154: TNS:could not resolve the connect identifier specified
我发现的很多信息都与弃用的System.Data.OracleClient
有关,而我正在使用Oracle.DataAccess.dll
文件版本4.112.3.0,汇编版本2.112.3.0。
我根据其他一些有类似问题的人将其运行的AppPool设置为Enable 32-Bit Application=True
,我认为其他一切都是默认设置。
我尝试使用gacutil来确保它安装在gac中。
我还制作了一个可以访问数据的小型winForms应用程序。
我尝试了几个连接字符串:
这个有效:
"Data Source=SOURCE;Persist Security Info=True;Password=****;User Id=****;"
这个不行,我找不到有效的SERVICE_NAME
:
"user id=****;password=****;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=****)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=****)));"
我总是收到这个错误:
Oracle.DataAccess.Client.OracleException: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
我找过的地方SERVICE_NAME
我检查了我能够与第一个连接字符串建立的连接,SERVICE_NAME
为空或sys$users
,具体取决于我运行的查询。
我找到了三个名为tnsnames.ora
的文件;一个完全空白,其他两个SERVICE_NAME
为Worker
和<database service name>
。
注意:我无法访问服务器,只能访问此视图的凭据。
答案 0 :(得分:0)
我找到了SERVICE_NAME
这个:select sys_context('userenv','db_name') from dual;
并使用了问题中的第二个连接字符串:
"user id=****;password=****;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=****)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=****)));"
感谢您的帮助。