2012-01-12 132 views
4

我們有要求使我們的產品能夠在Oracle以及SQL Server上工作(它們最初是圍繞它們構建的)。不幸的是,我們沒有任何Oracle內部開發經驗可言,但作爲一名高級開發人員,我擔任這個項目的領導者。到目前爲止,我已經設法通過使用下面的連接字符串,使我們的應用程序連接到Oracle數據庫(我使用的是Oracle XE 11.2):使用Windows身份驗證的Oracle連接字符串

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=VS010-ORA11GR1)(PORT=1523))(CONNECT_DATA=(SERVICE_NAME=DEVORA)));User Id=dbo;Password=dbo; 

我們決定使用這種類型的連接字符串是因爲原因我們不希望依賴每臺客戶機上的tnsnames.ora。但是,如您所見,這指定了Oracle用戶和相關密碼。我們還需要提供使用相當於SQL Server集成安全性的功能。

根據我已閱讀的文獻,要做到這一點,我只需要指定/作爲用戶標識,然後省略密碼部分(因爲對於Windows身份驗證,它將被忽略)。我也創造了甲骨文的用戶,並確保它匹配的Windows用戶,用下面的代碼片段:

CREATE USER "OPS$<DOMAIN>\<user>" IDENTIFIED EXTERNALLY; 

GRANT CONNECT,RESOURCE TO "OPS$<DOMAIN>\<user>"; 

我還檢查了其承載XE例如我的本地計算機上的sqlnet.ora文件和我的開發環境包含的行:

SQLNET.AUTHENTICATION_SERVICES= (NTS) 

我知道這將使我的應用程序連接到使用Windows身份驗證的Oracle數據庫。但是實際發生的是我收到以下Oracle錯誤消息:

ORA-01005:給出null密碼;登錄被拒絕

這沒有什麼意義,因爲當然它的空 - 它應該是,根據我讀過的教程。

該應用程序的目標.Net Framework 3.5,我們使用的是System.Data.OracleProvider,實際的連接等由Enterprise Library 5處理。順便說一下,我知道OracleClient組件的棄用,但我只是在進入更改提供商的額外複雜性之前,希望它能夠發揮作用。

有誰能告訴我我錯過了什麼嗎?我選擇了錯誤的連接字符串類型嗎?我對任何基本的錯誤表示歉意,但我一直設法避免Oracle直到現在,所以我的知識接近於零。

非常感謝

回答

1

我有同樣的問題,並添加到conn後解決。字符串:

Integrated Security=yes 
+0

真的嗎?我不記得我是否嘗試過這種方法,但是當我們有一些時間來測試它時,我會放棄它。我們決定至少在最初時不提供集成安全性,尤其是考慮到Oracle自己不推薦它。如果解決了這個問題,我會很開心! – 2012-02-13 11:31:27

+0

終於得到了幾分鐘在這個有一個裂縫,但我根本無法得到它的工作。我放棄這項研究,直到有迫切的需求! – 2012-03-19 10:49:26

0

擴展上述@Stikut的答案。我用NHibernate 3.3.3.GA測試了它,它工作。

user id=/;password=;Integrated Security=yes 
相關問題