私がやろうとしているのは、SSIS を使用して、Oracle 11 DB (クエリ) から SQL Server 2008 (単一テーブル) にいくつかの情報をコピーすることです。どうやら私はトランザクションのものと混同されました。トランザクション オプションをデフォルト値のままにするとすべてが正常に実行されますが、Package Transaction プロパティを Required に設定すると (またはデータ フロー コンポーネントの Transaction プロパティの 1 つを Required に設定すると)、次のエラーが発生します。したがって、この DTSX スクリプトを実行しようとすると、次のエラーが発生します。
Microsoft (R) SQL Server Execute Package Utility
Version 10.0.2531.0 for 32-bit
Copyright (C) Microsoft Corp 1984-2005. All rights reserved.
Started: 11:38:02 §£
Info: 2013-01-16 11:38:02.45
Code: 0x4001100A
Source: issued_import
Description: Starting distributed transaction for this container.
End Info
Info: 2013-01-16 11:38:04.52
Code: 0x4004300A
Source: Data Flow Task 1 SSIS.Pipeline
Description: Validation phase is beginning.
End Info
Info: 2013-01-16 11:38:05.01
Code: 0x40043006
Source: Data Flow Task 1 SSIS.Pipeline
Description: Prepare for Execute phase is beginning.
End Info
Error: 2013-01-16 11:38:05.10
Code: 0xC0047062
Source: Data Flow Task 1 Source - Query [1]
Description: System.InvalidOperationException: Unable to enlist in a distributed transaction
at Oracle.DataAccess.Client.OracleConnection.EnlistTransaction(Transaction transaction)
at Microsoft.SqlServer.Dts.Runtime.ManagedHelper.GetManagedConnection(String assemblyQualifiedName, String connStr, Object transaction)
at Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManager100.AcquireConnection(Object pTransaction)
at Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter.AcquireConnections(Object transaction)
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostAcquireConnections(IDTSManagedComponentWrapper100 wrapper, Object transaction)
End Error
Error: 2013-01-16 11:38:05.10
Code: 0xC004701A
Source: Data Flow Task 1 SSIS.Pipeline
Description: component "Source - Query" (1) failed the pre-execute phase and returned error code 0x80131509.
End Error
Info: 2013-01-16 11:38:05.10
Code: 0x4004300B
Source: Data Flow Task 1 SSIS.Pipeline
Description: "component "SQL Server Destination" (102)" wrote 0 rows.
End Info
Info: 2013-01-16 11:38:05.10
Code: 0x40043009
Source: Data Flow Task 1 SSIS.Pipeline
Description: Cleanup phase is beginning.
End Info
Info: 2013-01-16 11:38:05.10
Code: 0x4001100C
Source: Data Flow Task 1
Description: Aborting the current distributed transaction.
End Info
Info: 2013-01-16 11:38:05.10
Code: 0x4001100C
Source: issued_import
Description: Aborting the current distributed transaction.
End Info
DTExec: The package execution returned DTSER_FAILURE (1).
Started: 11:38:02 §£
Finished: 11:38:05 §£
Elapsed: 2.823 seconds
分散トランザクションを行うことに興味がないことに注意してください-関連するサービスはSQL Server側で実行されていますが、Oracle側では何も行われていないと確信しており、おそらく分散トランザクションは失敗するはずです. これが事実である場合、これに対処するために他にどのような方法がありますか? データ フロー タスクを BEGIN/END TRANSACTION Execute SQL ブロックにラップするには (ここで提案されているように)?