【发布时间】:2011-10-20 21:18:15
【问题描述】:
我已经为我的 Oracle 数据库配置了 NTS 身份验证并将我的 Windows 登录设置为数据库中的用户。
我可以使用命令sqlplus / 登录到数据库。
我还能够使用 ADO.NET 的 System.Data.OracleClient 提供程序使用 Windows 身份验证进行连接。
例如,以下代码 sn -p 起作用:
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。
这是一场精彩的表演。
【问题讨论】:
标签: c# oracle ado.net database-connection odp.net