2012-06-27 65 views
1

我嘗試從C#程序與ODP.NET執行follwing聲明:SET_NLS故障轉移的Oracle ODP.net

string sql = "BEGIN dbms_session.set_nls('NLS_NUMERIC_CHARACTERS','''.,'''); END;"; 
     using (OracleConnection connection = new OracleConnection("Data Source=db;User Id=a;Password=b")) 
     { 
      connection.Open(); 
      using (OracleCommand command = new OracleCommand(sql, connection)) 
      { 
       command.ExecuteNonQuery(); 
      } 
      connection.Close(); 
     } 

我檢索follwing錯誤消息:

ORA-02074:不能在分佈式事務中設置NLS

我沒有在我的代碼中使用任何事務。 OracleConnection是一個隱式分佈式事務嗎?如果我將enlist = false添加到它工作的連接字符串中。但我不知道爲什麼。

+0

嘗試將DistribTX = 0添加到連接。字符串請參閱[http://stackoverflow.com/questions/33659377/cannot-set-nls-in-a-distributed-transaction-error-using-ssis](http://stackoverflow.com/questions/33659377/cannot-集-NLS-IN-A-分佈式事務錯誤使用-SSIS) – yochyoch

回答

0

我對C#不太瞭解,但是您確定需要connection.Open()和connection.Close()語句嗎?我會假設使用聲明處理這一點。

0

我不需要在我的環境中進行分佈式事務,所以我通過在我的連接字符串中追加enlist=false來解決這個問題。希望對某人有用。