我的系統在將數據寫入Oracle(10g)數據庫之前,先將一些數據寫入SQL Server數據庫(2008),稍後再提取並處理它。使用TransactionScope和System.Data.OracleClient - TransactionAbortedException
我已經在TransactionScope中包裝了我的SQL Server交互,但是當我嘗試使用與Oracle交互相同的想法時,我得到一個`TranactionAbortedException - 「事務已中止」。
刪除TransactionScope,一切正常。
我總是可以恢復到手動管理自己的交易,但我希望有一個簡單的解決方案。
示例代碼:
private static void OracleTest()
{
using (TransactionScope ts = new TransactionScope())
{
using (OracleConnection conn = new OracleConnection(connString))
{
try
{
using (OracleCommand cmd = new OracleCommand())
{
cmd.CommandText = "MyPackage.MyFunction";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Connection = conn;
OracleParameter param = cmd.Parameters.Add(new OracleParameter("field1_", "abc123"));
param = cmd.Parameters.Add(new OracleParameter("rs_", OracleType.Cursor));
param.Direction = System.Data.ParameterDirection.Output;
conn.Open();
using (OracleDataReader dr = cmd.ExecuteReader())
{
我沒有發現任何表明您不能使用TransactionScopes與Oracle,但你可以從我的例子中看到,我們在第一障礙落下(當我們打開連接時),所以很難看到我可能會出錯的地方。