2010-12-02 7 views
0

私は2つのSQL Serverを持っています。 サーバーAとサーバーBSSIS - 転送後のソースレコードの更新

彼らの両方が

サーバーA「OrderRequest」と呼ばれるテーブルを持っているが、「家の中」であるとサーバーBは、当社のデータセンターです。

サーバーAは、リンクサーバーがある - ServerBのサーバーB 私はサーバーBがサーバーAが変化している「見る」ことを可能にするファイアウォールとして、後者のリンクサーバーを削除する必要が戻ってサーバーA

へのリンクサーバーがあるとし、これ以上許可しません。

我々は現時点では社内サーバー(サーバーA)

に当社のデータセンター(サーバーB)からデータをコピーしSSISパッケージを持って、SQL文がのラインに沿っている:

SELECT * 
FROM ServerB.OrderRequest 
WHERE 
OrderID NOT In (SELECT OrderID FROM ServerA.OrderRequest) 

SELECT * 
FROM ServerB.OrderRequest 
WHERE 
Transferred = 0 
:私は何をしたいのようなものは、あなたが見ることができるように

、これはサーバーA

を「見る」ことができるようにサーバーBが必要になりますです

これは簡単に行うことができます。しかし、私のSSISでは、私は連合を持っています(複数のWebDBを持っているので) その後、それらはServerAに挿入されます。

私がしなければならないことは、挿入成功時にTransferredをtrueに設定します。 これについてはどうすればいいですか?

答えて

1

あり、これを行うには多くの方法が明らかにされているが、それはいくつかの要因に依存します(あなたが転送を行っているとして、たとえば、あなたがサーバーBに複数のレコードを挿入している?)

  • にマルチキャストを実行します。内部にOLE DBコマンドがあるforeachコンテナ ServerBの各レコードで 更新を呼び出してください。
  • 選択する前にトランザクションを開始してください。選択が完了したら、すべての行を転送するように更新します(さらにアトミシティが必要な場合は、テンポラリテーブルを選択して、正しく更新されていることを確認してください)。完了したら:コミットします。失敗:ロールバック。
  • 単に完了時にSQLコマンドを実行します。...転送= 0
+0

おかげで、いくつかのより多くのグーグルの後、私はforeachのコンテナが進むべき道だと思う= 1を譲渡したUPDATE ServerB.OrderRequestのSETどのように任意のアイデアをそれをするために?私はこのテーマに別のQを追加しました - http://stackoverflow.com/questions/4614518/ssis-using-a-foreach-loop-container-to-update-records-after-transfer – Alex

関連する問題