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

MS SQL Server Discussion :

Problèmes avec les synonymes


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut Problèmes avec les synonymes
    Bonjour,

    Je suis arrivé il y a peu de temps en temps que DBA au sein d'une société qui avait besoin de quelqu'un pour remettre de l'ordre dans leurs BDDs qui en ont grandement besoin
    Un petit florilège des pratiques très ancrées dans la culture et que je vais devoir faire changer
    • Pas de dimensionnement Bases, Log, TempDB, ...
    • Des tables temporaires (sans jamais de PK) par dizaines dans les prosto pour "aller plus vite"
    • Des tables physiques sans PK deleté ou dropé chaque jour pour des process analytiques
    • Des index jamais defragmenté,
    • Les stats pas à jour
    • Une requête est un peu longue ?? Pas de problème on reboote !!


    Bref, je ne m'ennuie pas !!

    J'en viens aux derniers problèmes en date, l'utilisation des synonymes :
    Un dev m'a contacté pour une requête delete qui mets un temps fou alors qu'il n'y a aucune ligne à supprimer. Ma première idée était un problème au niveau des index, mais en faites quand il m'a dit qu'en remplaçant le synonyme par le nom complet la requête répondait instantanément, je n'ai pas su quoi lui répondre.

    En fouillant un peu, j'ai finit par découvrir une totale aberration, la requête est exécutée sur le SERVEUR1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    USE BDD1
     
    /* Cette requête ne répond pas */
    DELETE FROM synonym_table2 WHERE champ1 = 'toto'
     
    /* En regardant le chemin complet du synonyme je me suis aperçu qu'il pointant sur le même serveur, la même base, mais une table différente */
     
    /* Et celle-ci est instantanée */
    DELETE FROM SERVEUR1.BDD1.dbo.table2 WHERE champ1 = 'toto'
    J'ai donc dit d'arrêter d'utiliser les synonymes pour ce genre de cas, seulement, pour ma culture personnelle, j'aimerai bien savoir si quelqu'un avait une explication à ce phénomène que je ne comprends pas.

    MErci d'avance !

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 623
    Billets dans le blog
    10
    Par défaut
    /* En regardant le chemin complet du synonyme je me suis aperçu qu'il pointant sur le même serveur, la même base, mais une table différente */
    Si on crée un synonyme en se trompant de table ciblée, il est évident que la durée du DELETE est potentiellement différente, la table ciblée pouvant contenir des milliards de lignes alors que la table souhaitée n'en contenait que quelques unes...
    Je ne vois aucun mystère la dedans.

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    Oups désolé !! Si je dis des bétises, moi aussi, c'est normal que je ne puisse pas avoir la réponse attendue !!

    synonym_table2 = SERVEUR1.BDD1.dbo.table2

    Donc le DELETE se fait bien sur la même table.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    N'y aurais t-il pas un serveur lié sur lui même ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    C'est ce que je croyais aussi mais non.

  6. #6
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 961
    Par défaut
    Bonjour,

    Le premier réflexe quand on note une anomalie lors de l'exécution d'une requête est de sortir le plan d'exécution.
    donc ma première question est :
    Est-ce que les plans d'exécutions sont effectivement identiques ?

    J'ai eu un cas rapprochant : la même procédure prenait plus ou moins de temps en fonction de l'utilisateur.
    la réponse a été un mixte de :
    1. contexte de connexion : pas la même base définie dans le login
    2. définition de l'utilisateur : schéma par défaut
    3. sécurité : ensemble de propriétaires différents


    Pour notre gouverne :
    Quelle est la version & édition de SQL ? ([edit] : faudrait que j'apprenne à lire le sujet ! c'est du 2008R2. Est-ce en version Express ?)
    Est-ce que le problème est reproductible avec la même table mais dans une base "neuve" ?

  7. #7
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    Bonjour,

    Le problème c'est que pour la requête utilisant les synonymes le plan d'exécution ne s'affiche pas. Elle tourne sans cesse et ne se finit pas (je l'ai laissé tourné plus de 10 minutes). Même le plan d'exécution estimé ne vient pas.

    C'est un 2008R2 Edition Standard.

    Je n'ai pas faits le test sur une BDD "neuve".

Discussions similaires

  1. Problèmes avec les synonymes des procédures
    Par lido dans le forum Forms
    Réponses: 1
    Dernier message: 17/09/2008, 12h01
  2. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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