Visual Studio 2017使用ODT 連接Oracle 數據庫出現異常


2019.5.23 更新


 

突然發現原來是是sqlnet.ora在搞鬼,只要將SQLNET.AUTHENTICATION_SERVICES=(nts)  改為 SQLNET.AUTHENTICATION_SERVICES=(NONE) 就可以了。

 

百度關於SQLNET.ORA 的有關信息

 

ODT對該異常的提示信息又不恰當,導致我們在原地打轉。正確的異常的應該是提示“Credential retrieval failed”。

錯誤截圖

 

 

同事沒有遇到這個問題,很有可能一個原因就是他的ODT不是讀取ODT安裝后的SQLNET.ORA文件,而是定位到了Oracle Home下的文件,因為他們要運行PL/SQL ,所以先裝Oracle Home,之后再安裝ODT。 我是直接裝ODT沒有搞任何東西。

 

 

 

 

原文


 

昨天在使用VS通過ODT連接數據庫扒模型的時候發現了這個異常。經過測試,發現這個異常是因為 ODT 插件無法識別服務名中的“.”字符 導致的,比如“orcl.asian.com”。其他不包含“.”字符的服務名皆可正常連接。做了下簡單的回溯,一個月前的ODT插件是正常工作的,期間數據庫未作任何改動。唯獨Windows 和Visual Studio更新過。隨后測試了相同版本的Visual Studio(Visual Studio Community 2017 15.9.12)在Windows 7 下的連接測試,結果是連接成功。

異常截圖

 

Google 中有一些相關的文章,大致圍繞在幾個點上:

 

第三種方式停用MS Account 能解決這個問題。自己也順便用虛擬機做了不同版本的測試,結果不太理想,所有登錄的Windows 10都失敗了。但同事的1803裝183000的ODT就算登錄也是能夠正常連接,對比不同點有幾個:一是VS 2017的版本並非是我測試時的15.9而是Older Version。二是Windows 使用Administrator 登錄MS賬戶。

 

 

使用ODAC替換ODT也可以解決掉這個異常,好奇登錄MS 賬戶之后,Windows 到底進行了些什么操作?一個托管組件為什么會受到MS 賬戶的影響呢?為什么ODT不行,使用ODAC就可以?先Mark起來,后面有時間再細查。

 

總結

ODT插件是在Visual Studio一啟動就加載進內存了,所以,如果是在登錄MS 賬戶之前打開VS,那么ODT仍然是正常工作的,直到你關閉VS。解決這個異常除了上面說的切換MS Account 外,還有下面幾個。

1. 使用Oracle Data Access Components(可能會遇到Credential retrieval failed的問題,見Credential retrieval failed 的解決方法)。

2. 更換Windows 版本。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM