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 :

Liste des clés étrangères


Sujet :

MS SQL Server

  1. #1
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 226
    Points
    28 226
    Par défaut Liste des clés étrangères
    Salut à tous,

    Sous SQLServer (2000 ou 2005), est-il possible d'obtenir (requette, procedure, table, ...) la liste des clé étrangères qui font référence à une table en particulier ?


    Mon soucis est que sur un logiciel que nous distribuons, chez un de nos client, nous avons fait quantité de dev dans le logiciel et externe au logiciel faisant appel à une table particulière du modèle métier généralement par l'intermédiaire de clé étrangère depuis d'autres tables.
    Hors dans la nouvelle version du logiciel, l'éditeur a supprimé cette table et réparti les données ailleurs. Nous devons donc reprendre tous nos dev.
    J'aurais donc aimer connaitre la liste des tables faisant référence à cette table obsolète afin de cibler les dev qui devront être retouchés.

  2. #2
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonjour,

    Il y a quelque chose que je n'ai pas compris. Dans la nouvelle base, si la table a étée supprimée, les contraintes des tables étrangères l'ont aussi été.
    Et sur l'ancienne base il n'y a pas de problème, on peut utiliser Management studio pour obtenir la liste des dépendances de la table référencée.

    Sous 2005, on peut aussi utiliser sys.foreign_key_columns

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT tcontrainte.name as tablecontrainte, ocontrainte.name as contrainte, tref.name as tableref, * 
    FROM sys.foreign_key_columns fkc
    INNER JOIN sys.objects ocontrainte on ocontrainte.object_id = fkc.constraint_object_id
    INNER JOIN sys.objects tref ON tref.object_id = fkc.referenced_object_id  
    INNER JOIN sys.objects tcontrainte ON tcontrainte.object_id = fkc.parent_object_id  
    WHERE tref.object_id = OBJECT_ID('MaTableReferencee')
    ou bien utiliser sp_help 'MaTableReferencee'

    @+

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 226
    Points
    28 226
    Par défaut
    Oui sur la base convertie à la nouvelle version, les clés étrangères sont supprimées ainsi que le modèle métier standard est modifié en conséquence.

    Les modifications faites au modèle métier par nous ne sont pas modifiées, elles. Si les références directes pointent vers une autre table, les références faites à travers du code restent inchangées. Et c'est la dessus que je dois intervenir.

    Je vais essayer ta requête dès que je peux.

  4. #4
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Donc si ce code est implémenté sous la forme de procédures stockées, il faudra juste les mettre à jour. Sinon bon courage !

    Encore un avantage de mettre le code dans la base

    Voici un petit lien qui pourra peut être t'aider si tu veux coder des traitements à l'avance (dans la base) et les basculer facilement en production.

    Macros et assertions pour SQL Serveur

    @+

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 226
    Points
    28 226
    Par défaut
    Et non ce n'est pas des procédures stockées.

    C'est du code, inspiré du Delphi7, exécuté par un interpréteur intégré au logiciel. Il se modifie depuis l'interface du logiciel avec les droits de conception (logiciels SAGE).

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

Discussions similaires

  1. Liste des clés étrangères de l'utilisateur connecté
    Par SheikYerbouti dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/12/2011, 15h12
  2. Liste des clés étrangères non indexées de la base
    Par SheikYerbouti dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/12/2011, 15h11
  3. Réponses: 5
    Dernier message: 05/10/2006, 19h07
  4. Gestion des clés étrangères
    Par Gonelle dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 06/07/2006, 10h48

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