人們似乎沒有答案在線連接,以你如何使用.NET Oracle數據提供商(ODP.NET)連接到Oracle在一個非常特殊的情況下(12G及更高版本):如何從ODP.NET到Oracle(12G +)由代理用戶沒有密碼
- 用戶在外部標識的數據庫
- 授權用戶訪問到另一個模式(應用程序用戶)通過代理上連接
用戶已被設立這樣的:
CREATE USER user_in_question
IDENTIFIED EXTERNALLY
-- etc.
而且通過代理服務器連接已經建立這樣的:
ALTER USER specified_app_user GRANT CONNECT THROUGH user_in_question
創建ODP.NET的OracleConnection字符串時,會是這樣的(使用用戶友好OracleConnectionStringBuilder)合理的方法:
var connBuilder = new OracleConnectionStringBuilder
{
UserID = "/", // External login using the user running the program
ProxyUserId = "specified_app_user",
DataSource = "database",
};
這是行不通的。也不提供空白的「密碼」或空白的「代理密碼」。也不會刪除UserId。
那麼,你如何連接在這種情況下使用ODP.NET?
請注意,當使用代理指定連接字符串時,指定的應用程序用戶沒有方括號用戶ID =/ – StefanDK
這也是一個有效格式:var connBuilder = new OracleConnectionStringBuilder {UserID =「specified_app_user」,DataSource =「database」,ProxyUserId =「/」}然後不需要括號中,因爲代理用戶ID指定爲/(當前用戶) – StefanDK
看來,儘管「用戶ID = specified_app_user;數據源=數據庫;代理用戶ID = /」應該工作,它不總是。正確的工作方式是在目標模式中包含[]: USER ID = [specified_app_user]; DATA SOURCE = database – StefanDK