2016-11-08 122 views
1

我有版本9.1.131.0Devart dotConnect Express for Oracle連接服務名稱

我想連接到帶有服務名稱的Oracle 12數據庫。 我有登錄,密碼,服務器,但似乎我不能將服務名稱或端口添加到OracleConnectionStringBuilder。

如何連接到我的數據庫與服務名稱?

我可以使它與Oracle.ManagedDataAccess發生,但由於性能問題,我想測試如果Devart驅動程序工作得更好。

親切的問候

+1

最有可能的表現不會改變。無論如何,你的連接字符串是什麼,你得到的錯誤是什麼? –

+0

它說{「關鍵字不支持:'服務名稱'。」} ConnectionString是:$「User ID = {myCSB.UserId}; Password = {myCSB.Password}; Server = {host}; Service Name = { serviceName}; Port = 1521;「 – k4yaman

+1

我不知道DevArt是否支持'Server,Service Name,Port'。通常這是由'tnsnames.ora'文件中的別名定義的。改用'Data Source'。 –

回答

0

所以這是我的結論:

因爲我不希望我的用戶安裝Oracle客戶端或安裝包超過10 MB,則Devart dotConnect Express的甲骨文將無法正常工作。從異常
報價:
"Express Edition doesn't support Direct mode. Do not use Direct parameter of connection string. Refer to dotConnect for Oracle editions matrix."

感謝您的幫助。

親切的問候

+0

我不知道你的性能問題是什麼,但是當你檢查直接模式的大量限制時,你會發現其中的幾個肯定會降低你的性能,例如沒有語句緩存或缺少對數組綁定的支持。 –

1

嘗試SID代替Service Name。我發現這一個:Using Direct Mode

SID **系統標識符(全局數據庫名)

**服務名稱連接字符串參數可以用來代替SID,但在直接模式下,您只能連接到一個數據庫實例(不支持RAC)。

對於我這樣工作的:

var str = new DbConnectionStringBuilder(false); 
str.Add("Data Source", db); 
str.Add("User ID", user); 
str.Add("Password", pw); 
var con = new Devart.Data.Oracle.OracleConnection(str.ConnectionString); 
con.Open(); 

你也可以把完整的連接字符串作爲數據源,而不是檢索別名從tnsnames.ora文件,例如

string db = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={host})(PORT=1521))(CONNECT_DATA=(SERVICE_NAME={serviceName})))"; 
str.Add("Data Source", db); 
+0

我也發現了這個,但是我的類OracleConnectionStringBuilder沒有這個方法。IDK爲什麼 – k4yaman

+1

使用泛型類[DbConnectionStringBuilder](https://msdn.microsoft.com/en-us/library/system.data.common.dbconnectionstringbuilder(v = vs.110).aspx) –

相關問題