2011-08-05 50 views
1

我配置了我的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。

回答

3

它工作正常,我使用ODP.net 11和連接字符串(在Oracle客戶端tnsnames.ora文件來定義DLGP):正確Data Source=DLGP;User Id=/;Password=;

你sqnet.ora文件需要設置爲這是可行的,但如果SQLPlus可以連接,情況應該已經如此。你只有一個Oracle家嗎?如果ODP.net選擇了第二個可以很好地解決問題的方案(並且這取決於你如何安裝它)。

+0

你是對的,ODP客戶端安裝在它自己的Oracle Home中,它沒有包含所有重要SQLNET.AUTHENTICATION_SERVICES =(NTS)行(我使用ezconnect而不是tnsnames.ora)的必需sqlnet.ora。我現在使用在http://bit.ly/mUxVhh找到的xcopy部署攻擊,並將sqlnet.ora放在與dll相同的目錄中,似乎很好地工作!謝謝,我現在要接受這個答案。 – luksan

相關問題