OracleClient +与.NET的无TNSless连接

mmvthczy  于 2023-04-20  发布在  Oracle
关注(0)|答案(4)|浏览(101)

我们使用System.Data.OracleClient和抽象基类DbConnection、DbCommand(等)连接到Oracle。
在我们的开发阶段,连接工作正常。在staging期间,我们遇到错误ORA-12514:侦听器当前不知道连接描述符中请求的服务。
我们的目标是在没有TNS条目的情况下进行连接,并在连接字符串中提供所有相关信息(www.connectionstrings.com/oracle#19)
我可以确认SQL plus将从临时服务器连接到所需的模式(侦听器正在侦听)。

SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;

服务器上有没有我们遗漏的安装程序?我们可以修改的?
任何帮助都很感激。

mum43rcc

mum43rcc1#

SID不是服务名。服务名通常是完全限定的数据库名,而SID是短标识符。
服务名可能是dbname.company.com,而SID是dbname。一个示例实际上可以有多个服务名与之关联,但只能有一个SID。
在连接字符串中将SERVICE_NAME更改为SID,或为SERVICE_NAME选项指定服务名称。

9rygscc1

9rygscc12#

如果我没记错的话,我遇到了同样的问题,直到我切换到使用Oracle提供程序以及OracleDbConnection和OracleDbCommand。

zrfyljdw

zrfyljdw3#

如果您的Oracle客户端是版本10+,您还可以使用EZCONNECT(代表Easy Connect命名方法)。您的连接字符串将如下所示:

"Data Source=MyHost:MyPort/MyServiceName;User ID=myUserName;Password=myPassword"

与Oracle Instant Client相结合,它使Oracle的使用感觉几乎是专业的!

bgtovc5b

bgtovc5b4#

Microsoft已弃用System.Data.OracleClient。请参阅this post

相关问题