我配置了我的Oracle數據庫以進行NTS身份驗證,並將我的Windows登錄設置爲數據庫中的用戶。使用Windows身份驗證與ODP.NET無法連接到Oracle
我可以用命令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 Windows身份驗證(ODP.NET)連接。
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:無效的用戶名/密碼;登錄否認
根據這個鏈接,我應該能夠使用所提供的連接字符串創建一個ODP.NET連接到Oracle:http://www.oracle.com/technetwork/articles/dotnet/cook-masteringdotnet-090821.html
爲什麼ODP.NET客戶端不會允許我連接,而(不建議使用)微軟客戶端呢?
2007年在以下線程中討論了此問題,但未提供任何解決方案:http://forums.oracle.com/forums/thread.jspa?messageID=2312148。
這是一個showstopper。
你是對的,ODP客戶端安裝在它自己的Oracle Home中,它沒有包含所有重要SQLNET.AUTHENTICATION_SERVICES =(NTS)行(我使用ezconnect而不是tnsnames.ora)的必需sqlnet.ora。我現在使用在http://bit.ly/mUxVhh找到的xcopy部署攻擊,並將sqlnet.ora放在與dll相同的目錄中,似乎很好地工作!謝謝,我現在要接受這個答案。 – luksan