我们使用 System.Data.OracleClient 和抽象基类 DbConnection、DbCommand(等)连接到 Oracle。
连接在我们的开发阶段工作正常。在暂存期间,我们遇到错误 ORA-12514:TNS:监听器当前不知道连接描述符中请求的服务。
我们的目标是在没有 TNS 条目的情况下进行连接,并在连接字符串中提供所有相关信息 (www.connectionstrings.com/oracle#19)
我可以确认 SQL plus 将从登台服务器(监听器正在监听)连接到所需的模式。连接到 SQLPlus 的 TNS 条目与正在构建的查询字符串的所有凭据相匹配。
SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;
我们错过了服务器上的安装吗?我们可以调整什么?
感谢任何帮助。
最佳答案
SID 不是服务名称。服务名称通常是完全限定的数据库名称,而 SID 是短标识符。
服务名称可能是 dbname.company.com,而您的 SID 是 dbname。一个实例实际上可以关联多个服务名称,但只能关联一个 SID。
在连接字符串中将 SERVICE_NAME 更改为 SID,或为 SERVICE_NAME 选项指定服务名称。
关于.net - OracleClient + 与 .NET 的无 TNS 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1492786/