2010-12-02 8 views
0

J'ai 2 serveurs SQL. ServerA et ServerBSSIS - Mettre à jour les enregistrements sources après le transfert

Ils ont tous deux une table appelée "OrderRequest"

ServerA est "dans la maison" et ServerB est dans notre centre de données.

Servera qui possède un serveur lié - ServerB Sur ServerB il y a un serveur lié retour à ServerA

Je dois enlever ce dernier serveur lié, comme le pare-feu qui permet ServerB de « voir » ServerA est en train de changer, et ne permettra plus cela.

Nous avons un package SSIS qui copie les données de notre centre de données (ServerB) à notre interne Server (ServerA)

En ce moment, l'instruction SQL est le long des lignes de:

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

comme vous pouvez le voir, il faudra ServerB pouvoir « voir » ServerA

ce que je veux faire est quelque chose comme:

SELECT * 
FROM ServerB.OrderRequest 
WHERE 
Transferred = 0 

C'est assez facile à faire. Cependant, dans mon SSIS j'ai une Union (car j'ai plus d'un WebDB) Après cela, ils sont insérés dans ServerA.

Ce que j'ai besoin de faire, est mis à True, sur insertion réussie. Comment ferais-je cela?

Répondre

1

Il y a évidemment beaucoup de façons de le faire, mais cela dépend de quelques facteurs (par exemple, vous insérez plusieurs enregistrements dans ServerB que vous faites le transfert?)

  • Faites une diffusion groupée à un pour chaque conteneur avec une commande OLE DB à l'intérieur. Appelez mise à jour sur chaque enregistrement sur ServerB.
  • Commencez une transaction avant de sélectionner. Une fois la sélection terminée, mettez à jour toutes les lignes à transférer (si vous voulez encore plus d'atomicité, sélectionnez dans une table temporaire pour vous assurer que vous mettez à jour correctement). Une fois terminé: commettre. Fail: rollback.
  • Il suffit de lancer une commande SQL à la fin: UPDATE ServerB.OrderRequest SET Transféré = 1 = 0 Transféré OÙ
+0

grâce, après un peu plus googler, je pense que le récipient foreach est la voie à suivre ... une idée pour le faire? J'ai ajouté un autre Q sur ce sujet - http://stackoverflow.com/questions/4614518/ssis-using-a-foreach-loop-container-to-update-records-after-transfer – Alex

Questions connexes