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 :

DELETE via des synonymes et des serveurs liés


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Points : 88
    Points
    88
    Par défaut DELETE via des synonymes et des serveurs liés
    Bonjour,
    j'ai un un soucis sur de la suppression d'informations via des serveurs liés, et je pense que c'est un soucis de configuration.
    La requête en question est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    SET XACT_ABORT ON
     
    /****************
    debut transaction
    *****************/
    begin tran t_siteContact
     
    	/***********
    	  maj site
    	***********/
    	delete from Site
    	where ID not in (select ID from vue_site);
            if @@error<>0
    		select @message=@message+'site mal supprime';
    if (@message='')
    	begin
     
    	--print('tran commit');
     
    	commit tran t_siteContact 
    	select 1 as result;
     
    	end
    else
    	begin
     
    	--print('tran rollback');
     
    	rollback tran t_siteContact
    	select NULL as result;
     
    	end
     
    SET XACT_ABORT OFF
    Elle se situe dans un procédure stockée, dans une transaction, "Site" est un synonyme de la table sur mon serveur lié "TEST", "vue_site" est une vue.

    En local sur mon SQL Server 2005, tout se passe correctement, il n'y a aucun soucis. Mais dès que je veux la lancer sur le serveur de production j'ai une erreur qui apparait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Le fournisseur OLE DB "SQLNCLI" du serveur lié "TEST" a retourné le message "Une opération OLE-DB en plusieurs étapes a généré des erreurs. Vérifiez chaque valeur d'état OLE-DB disponible. Aucun travail n'a été effectué.".
    Msg*7202, Niveau*11, État*2, Ligne*1
    Impossible de trouver le serveur 'LOCALHOST\SQLEXPRESS' dans sysservers. Vérifiez que le nom du serveur correct a été spécifié. Si nécessaire, exécutez la procédure stockée sp_addlinkedserver pour ajouter ce serveur à sysservers.
    Là ou je me dis que c'est un problème de configuration, c'est que dans d'autres DELETE sur d'autres synonymes, j'ai la même erreur sur le serveur de prod, et en local tout se passe bien.
    Je précise que les liaisons sont bonnes entre les serveurs liés, mais select et update fonctionnent très bien en local et sur le serveur de prod (select * from Site marche par exemple)
    Merci de votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Points : 88
    Points
    88
    Par défaut
    J'ai suivi ce post :
    http://social.msdn.microsoft.com/for...-1b26cb504f77/

    J'ai essayé de faire :
    select @@servername

    Et la réponse est que je récupère est :
    NULL

    Je pense qu'il y a un soucis...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Remplace LOCALHOST par le nom de la machine dans la définition de ton linked server.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Points : 88
    Points
    88
    Par défaut
    Bonjour,
    merci de ton aide, j'ai remplacé par le nom de la machine, le message est exactement le même sauf que au lieu de LOCALHOST j'ai le nom de ma machine.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Est-ce que ton linked server s'appelle bien : LOCALHOST\SQLEXPRESS ?
    Est-ce que ton linked server est bien configuré? L'as-tu testé ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Points : 88
    Points
    88
    Par défaut
    Oui, les serveurs liés fonctionnent bien.
    Aucun soucis de ce côté là, je peux faire des select avec des synonymes pointant sur des tables du serveur lié.
    De plus, j'utilise cette requête à un moment très précis, sinon le reste du temps tout est OK, mais requête passe bien (ce ne sont pas des delete).
    Et en local tout passe bien.
    Il y a peut être une configuration spéciale pour les requêtes DELETE ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Points : 88
    Points
    88
    Par défaut
    Bon, j'ai trouvé le solution, il s'agissait du deuxième message que j'ai mis, la variable @@servername était nulle.
    Voici ce que nous avons fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sp_addserver <new_name>, local
    GO
    Et hop, mon delete passe très bien après.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/12/2009, 13h02
  2. Trigger pour mettre des droits sur des procedures et des vues
    Par briino dans le forum Développement
    Réponses: 3
    Dernier message: 23/09/2009, 09h44
  3. Réponses: 4
    Dernier message: 02/04/2008, 17h51
  4. Réponses: 3
    Dernier message: 13/09/2007, 18h11
  5. Réponses: 3
    Dernier message: 23/01/2007, 08h14

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