2011-12-14 14 views
1

Accessデータベースからデータを読み取り、SQL Server(2008 R2)データベースを更新する複雑なSSISパッケージ(+サブパッケージ)があります。SQLとJETを使用したSSISトランザクション

正常に動作しますが、パッケージ全体をトランザクションにして、すべてのレコードを挿入/更新するか、またはSQLデータが一貫性を保つようにする必要がありません。

私はパッケージTransactionOptionを設定した場合必要私はパッケージを実行すると、私はJETのOLEDB接続が分散トランザクションに参加することができないと、パッケージが失敗したことを示すメッセージが表示されます。

Accessデータベースに対していくつかの更新が行われますが、パッケージが実行されるたびにAccessデータベースの新しいコピーが使用されるため、これが矛盾した状態になっても問題ありません。

1つの分散トランザクションでパッケージを実行するが、Accessデータベース接続をトランザクションから除外する方法はありますか?

私はたくさんのオプションを試しましたが、今ではサークルでラウンドしています!前もって感謝します。

ダグ

答えて

2

それはあなたのパッケージのロジックがどのように見えるかを完全には明らかではないが、一つの可能​​な解決策は、データ1コピーして起動するようになります:SQL Serverでの同様の構造のテーブルにAccessデータベースから1を。その後、ストアドプロシージャを使用して処理を続行することができます。また、すべてのデータがすでにサーバー上にあるため、トランザクションを制御する方がはるかに簡単です。

これは、他の外部依存関係がありますが、一般的な理由から考慮する価値がある可能性があるので、かなり一般的なETLパターンです(最初に共通のステージングデータベースにコピーしてから変換してください) 。しかし、これがあなたに適しているかどうかは、あなたのデータとシステム環境によって大きく左右されます。

+0

お寄せいただきありがとうございます。私たちは他のデータのアップロードでこれを行い、これはここでより良いアプローチになると思います。 あなたの迅速な対応にもう一度感謝します。 – Doug

+0

MySQLソースで同様の問題に遭遇し、[Raw Files](http://technet.microsoft.com/en-us/library/ms141661.aspx)を使用して同様の効果を得ました – billinkc

関連する問題