Bonjour,
Le titre n'est peut être pas très explicite. Mon objectif est de copier à l'aide d'une procédure stockée les données d'une table dans une autre table présente sur un autre serveur. J'utilise OPENDATASOURCE pour utiliser mon deuxième serveur.
Le transfert des données d'une table à l'autre fonctionne correctement, je voudrais maintenant réussir à mettre à jour uniquement les lignes ajoutées depuis le dernier lancement de la procédure stockée. J'ai voulu faire ça avec un select imbriqué, mais ça ne fonctionne pas, aucune erreur mais les nouvelles lignes ne sont pas ajoutées dans la seconde table.
Je fais un insert dans ma table 2 à partir d'un select dans ma table 1 si les données ne sont pas déjà présente dans la table 1 avec le NOT EXISTS. J'utilise la date pour ça car c'est le seul champs qui est unique sans compter l'ID.
Voici un morceau du code pour vous aidez à comprendre. Ce code s’exécute sans problème mais je n'ai pas le résultat attendu. Merci de me donner des pistes ou de me proposer une autre solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 INSERT serveur1.table1 ( .... ) SELECT .... FROM OPENDATASOURCE('...','Data Source= ....; User ID= ....; Password= ...;').maTable2 AS maTable2 WHERE NOT EXISTS ( SELECT DISTINCT ... FROM OPENDATASOURCE('...','Data Source= ...; User ID= ...; Password= ...;').maTable2 AS maTable2, maTable1 AS maTable1 WHERE maTable.date = maTable2.date )





Répondre avec citation




Partager