IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Merge avec openquery [2012]


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 75
    Points : 53
    Points
    53
    Par défaut Merge avec openquery
    Bonjour à tous,

    je rencontre un problème peut-être seulement de syntaxe de mon instruction MERGE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select * from openquery 
    ([Linkserver], 
    'MERGE INTO [Serveur\Instance].BDD.[SCH].[TBLE] AS target
    USING Linkserver.BDD.[SCH].[TBLE] AS source
    ON source.PK=target.PK
    WHEN NOT MATCHED BY TARGET THEN
    INSERT ([Colonne1],[Colonne2])
    VALUES (source.[Colonne1],source.[Colonne2]);'
    )
    Mon but est d'incrémenter des tables d'un serveur vers un autre (d'où le serveur lié). De plus j'ai des colonnes avec des types geography (d'où le OPENQUERY)
    Un simple SELECT sur mon serveur lié via OPENQUERY fonctionne sans souci mais voilà le message d'erreur retourné avec le MERGE :
    OLE DB provider "SQLNCLI11" for linked server "SQLPRAADA" returned message "Deferred prepare could not be completed.".
    Msg*8180, Niveau*16, État*1, Ligne*1
    Statement(s) could not be prepared.
    Msg*5315, Niveau*16, État*1, Ligne*1
    The target of a MERGE statement cannot be a remote table, a remote view, or a view over remote tables.

    Auriez-vous une idée pour m'éclairer ?

    Merci d'avance

    Flo

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    J'aurai plutôt vu les choses comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    MERGE INTO [Serveur\Instance].BDD.[SCH].[TBLE] AS target
    USING OPENQUERY (
        [Linkserver], 
        'SELECT * FROM  BDD.[SCH].[TBLE]'
    ) AS source
        ON source.PK=target.PK
    WHEN NOT MATCHED BY TARGET THEN
    INSERT ([Colonne1],[Colonne2])
    VALUES (source.[Colonne1],source.[Colonne2]);

  3. #3
    Membre actif
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 141
    Points : 210
    Points
    210
    Par défaut Synchro
    Bonjour,

    Si vous êtes intéresser j'ai développer un logiciel qui permet de faire des synchro de base de donnée sql server (il peu également généré le script sql a exécute)..
    Je recherche des beta testeurs.

    L’avantage par rapport a un merge est qu'il gère toutes les contrainte de clef des autres tables.
    Si vous êtes intéresser faite moi signe.

    Cordialement
    Sébastien
    DSI et développeur du logiciel Lulidb
    http://www.lulidb.com - outils de gestion de base de données orienté développer.

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 75
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Merci beaucoup aieeeuuuuu !! c'est exactement ça, j'ai testé et ça fonctionne parfaitement, j'avais bien un problème de syntaxe

    Aserf, merci de ta proposition mais je gère aussi les contraintes de clés dans mon script, c'était vraiment l'utilisation de OPENQUERY qui me posait problème, par contre si tu veux cherche vraiment des bêta-testeurs je peux toujours essayer de t'aider


    Toujours aussi bien ce forum

    Bonne journée

  5. #5
    Membre actif
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 141
    Points : 210
    Points
    210
    Par défaut Contrainte
    Si ce n'est pas indiscret tu gère comment les contrainte de clef, car j'ai vue plusieurs algo sql sur le net et aucune n’était juste ... il partait tous des tables qui ne n'on pas de clef étrangère pour faire du récursif, mais cette méthode est mauvaise et ne fonctionne pas dans tout les cas.




    Citation Envoyé par FloFlo12 Voir le message
    Bonjour,

    Merci beaucoup aieeeuuuuu !! c'est exactement ça, j'ai testé et ça fonctionne parfaitement, j'avais bien un problème de syntaxe

    Aserf, merci de ta proposition mais je gère aussi les contraintes de clés dans mon script, c'était vraiment l'utilisation de OPENQUERY qui me posait problème, par contre si tu veux cherche vraiment des bêta-testeurs je peux toujours essayer de t'aider


    Toujours aussi bien ce forum

    Bonne journée
    DSI et développeur du logiciel Lulidb
    http://www.lulidb.com - outils de gestion de base de données orienté développer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2015, 17h16
  2. Merge avec un probleme d'index
    Par Flipmode dans le forum SQL
    Réponses: 3
    Dernier message: 19/06/2007, 15h14
  3. Merge avec deux vector, sans doublons ?
    Par b Oo dans le forum SL & STL
    Réponses: 8
    Dernier message: 06/11/2006, 23h00
  4. Réponses: 11
    Dernier message: 27/04/2006, 15h03
  5. Merge avec variables
    Par kluh dans le forum Oracle
    Réponses: 18
    Dernier message: 25/07/2005, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo