0

我无法使用 Oracle.ManagedDataAccess 和 Windows 本机身份验证连接到 Oracle 数据库。

我正在一个工作站上开发,我可以通过 PL/SQL Developer 使用 NTS 连接到同一个数据库,并使用非托管 Oracle.DataAccess 通过 C# 代码连接到同一个数据库。这使我相信数据库、工作站或帐户都没有根本性的问题。现在我正在尝试评估是否可以在我们的解决方案中切换到 Oracle.ManagedDataAccess。

到目前为止,我已经尝试了以下方法:

  • 创建了一个新的空白项目 OracleManagedAccessTest
  • 在引用下添加了 NuGet 包 Oracle.ManagedAccessTest v19.3.1(撰写本文时的最新版本)
  • 更新 App.config 中的 <dataSource> 标记以匹配 tnsnames.ora 中的条目(使 C# 项目自包含,不依赖外部组件)
  • 在 App.config 的 <oracle.manageddataaccess.client><version number="*"><settings> 下添加了 <setting name="sqlnet.authentication_services" value="NTS"/> 标签

我正在使用以下最小代码来测试连接:

try
{
    using (OracleConnection conn = new OracleConnection("Data Source=EDBDEVD;User Id=/;"))
    {
        conn.Open();
    }
}
catch (OracleException ex)
{
    Console.WriteLine("Exception Message: " + ex.Message);
}

连接尝试失败并出现以下错误:“ORA-01017:用户名/密码无效;登录被拒绝”

这看起来几乎是一个太简单的问题,但我似乎无法解决它,或者在网上找到一个可行的解决方案。任何帮助将不胜感激。

4

1 回答 1

0

试试这个:

string oradb = "Data Source=ORCL;User Id=hr;Password=hr;";

OracleConnection conn = new OracleConnection(oradb); // C#

conn.Open();

OracleCommand cmd = new OracleCommand();

cmd.Connection = conn;

cmd.CommandText = "select department_name from departments where department_id = 10"; cmd.CommandType = CommandType.Text;

OracleDataReader dr = cmd.ExecuteReader();

dr.Read();

label1.Text = dr.GetString(0);

另请参阅:https ://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/GettingStartedNETVersion/GettingStartedNETVersion.htm

于 2019-08-20T15:07:54.497 回答