无法使用 ODP.NET 的 Windows 身份验证连接到 Oracle

发布于 2024-11-27 21:07:29 字数 1437 浏览 3 评论 0原文

我已将 Oracle 数据库配置为 NTS 身份验证,并将 Windows 登录设置为数据库中的用户。

我可以使用命令 sqlplus / 登录数据库。

我还可以使用 ADO.NET 的 System.Data.OracleClient 提供程序通过 Windows 身份验证进行连接。

例如,以下代码片段有效:

DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OracleClient");
DbConnection connection = factory.CreateConnection();
connection.ConnectionString = "Data Source=//localhost/Test; Integrated Security=yes";
connection.Open();

但是,我无法使用 Oracle.DataAccess.Client (ODP.NET) 使用 Windows 身份验证进行连接。

DbProviderFactory factory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
DbConnection connection = factory.CreateConnection();
connection.ConnectionString = "Data Source=//localhost/Test; User Id=/";
connection.Open();

此代码块导致以下异常:

Oracle.DataAccess.Client.OracleException 未处理 消息=ORA-1017: 无效的用户名/密码;登录被拒绝

根据此链接,我应该能够使用提供的连接字符串创建到 Oracle 的 ODP.NET 连接: http://www.oracle.com/technetwork/articles/dotnet/cook-masteringdotnet-090821.html

为什么ODP.NET 客户端不允许我连接,而(已弃用的)Microsoft 客户端允许我连接?

这个问题在 2007 年的以下线程中进行了讨论,但没有提供任何解决方案: http ://forums.oracle.com/forums/thread.jspa?messageID=2312148

这是一场精彩的比赛。

I've configured my Oracle Database for NTS Authentication and set my Windows Login up as a user in the database.

I'm able to log in to the Database with the command sqlplus /.

I'm also able to connect using Windows Authentication using the System.Data.OracleClient provider for ADO.NET.

For example, the following code snippet works:

DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OracleClient");
DbConnection connection = factory.CreateConnection();
connection.ConnectionString = "Data Source=//localhost/Test; Integrated Security=yes";
connection.Open();

However, I'm unable to connect using Windows Authentication using Oracle.DataAccess.Client (ODP.NET).

DbProviderFactory factory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
DbConnection connection = factory.CreateConnection();
connection.ConnectionString = "Data Source=//localhost/Test; User Id=/";
connection.Open();

This block of code results in the following exception:

Oracle.DataAccess.Client.OracleException was unhandled
Message=ORA-1017: invalid username/password; logon denied

According to this link I should be able to create an ODP.NET connection to Oracle using the provided connection string: http://www.oracle.com/technetwork/articles/dotnet/cook-masteringdotnet-090821.html

Why does the ODP.NET client not allow me to connect while the (deprecated) Microsoft client does?

This problem was discussed at the following thread in 2007, but no solution was every provided: http://forums.oracle.com/forums/thread.jspa?messageID=2312148.

This is a showstopper.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

百善笑为先 2024-12-04 21:07:29

使用 ODP.net 11 和此连接字符串(在 Oracle 客户端中使用 tnsnames.ora 文件来定义 DLGP)对我来说效果很好:Data Source=DLGP;User Id=/;Password=;

您的 sqnet.ora 文件需要正确设置才能正常工作,但如果 SQLPlus 可以连接,情况应该已经如此。您只有一个 Oracle 主目录吗?如果 ODP.net 选择了第二个,则可能会把事情搞砸(这可能会发生,具体取决于您如何安装它)。

It works fine for me using ODP.net 11 and this connection string (with a tnsnames.ora file in the Oracle client to define DLGP): Data Source=DLGP;User Id=/;Password=;

Your sqnet.ora file needs to be setup correctly for this to work, but that should already be the case if SQLPlus can connect. Do you only have one Oracle home? If ODP.net is picking up a second one that can muck things up nicely (and that can happen depending on how you install it).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文