2013年4月21日 星期日

System.Data.OracleClient.OracleInternalConnection.Enlist & HRESULT: 0x8007000B 的問題及解決

如果只是用一般的增刪修功能的話,一般的oracle client就夠應付的了
但是用到transaction,開啟第二條connection時,就會出現以下的錯誤:
System.Data.OracleClient.OracleInternalConnection.Enlist(String userName, String password, String serverName, Transaction transaction, Boolean manualEnlistment)
   於 System.Data.OracleClient.OracleInternalConnection.Activate(Transaction transaction)
   於 System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction)
   於 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
   於 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   於 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   於 System.Data.OracleClient.OracleConnection.Open()
   於 database.datatype.OracleTable.database.datatype.ITable.insertRecord(Record rec, Int32 seqColmnIndex)
試圖載入格式錯誤的程式。 (發生例外狀況於 HRESULT: 0x8007000B)
解決之道是除了在「方案」->「屬性」->「建置」:目標平台由Any Cpu改為x86之外,

connection  string也要加上「Enlist=false;Pooling=false;」這兩個參數
(上述兩項修改完後,請清除重建方案)
就可以解決這個例外了
為什麼會有這樣的代志發生?
請參這個連結 
 

沒有留言:

張貼留言