微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有Windows身份验证的Oracle连接字符串

我们要求使我们的产品适用于Oracle以及sql Server(最初构建它们).不幸的是,我们没有任何内部Oracle开发经验可言,但作为一名高级开发人员,我已经找不到领导该项目.到目前为止,我已经设法通过使用以下连接字符串使我们的应用程序连接到Oracle数据库(我正在使用Oracle XE 11.2):

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=VS010-ORA11GR1)(PORT=1523))(CONNECT_DATA=(SERVICE_NAME=DEVORA)));User Id=dbo;Password=dbo;

我们决定使用这种类型的连接字符串的原因是因为我们不想依赖于在每台客户机上更改tnsnames.ora.但是,正如您所看到的,它指定了Oracle用户和相关密码.我们还需要提供使用相当于sql Server集成安全性的能力.

根据我读过的文献,要做到这一点,我只需要指定/作为用户ID,然后省略密码部分(因为这对于Windows身份验证无论如何都会被忽略).我还在Oracle中创建了用户,确保它与Windows用户匹配,并使用以下代码段:

CREATE USER "OPS$<DOMAIN>\<user>" IDENTIFIED EXTERNALLY;

GRANT CONNECT,RESOURCE TO "OPS$<DOMAIN>\<user>";

我还检查了托管XE实例和我的开发环境的本地机器上的sqlnet.ora文件是否包含以下行:

sqlNET.AUTHENTICATION_SERVICES= (NTS)

我知道这将使我的应用程序能够通过Windows身份验证连接到Oracle数据库.然而,实际发生的是我收到以下Oracle错误消息:

ORA-01005: null password given; logon denied

根据我读过的教程,这当然没有多大意义,因为它当然是空的 – 应该是它.

该应用程序的目标是.Net Framework 3.5,我们正在使用System.Data.OracleProvider,实际的连接等由Enterprise Library 5处理.顺便提一下,我知道OracleClient组件的弃用但我只想让它工作在我进入更改提供商的额外复杂性之前.

谁能告诉我我错过了什么?我选择了错误类型的连接字符串吗?我为任何基本错误道歉,但我一直设法避免使用Oracle,所以我对它的了解接近于零.

非常感谢

解决方法

我有同样的问题,并在将此添加到conn后解决了.串:

Integrated Security=yes

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐