none
Foreign Key dans plusieurs Bases sur un même serveur RRS feed

  • Question

  • Bonjour,
    j'aimerais savoir s'il est possible de générer des FOREIGN KEYS inter-bases sur un même serveur...
    J'ai deux Bases de données et j'aimerais mettre une "FK" sur un champ dans une table de la premiere base vers un champ d'une autre table sur une autre base...
    J'ai essayé en ecrivant la requete T-SQL mais il me renvoye un message d'erreur suivant :
    "Les références de clés étrangères aux bases de données croisées ne sont pas prises en charge" .

    Je n'ai pas trouvé de Documentation qui en parle...

    Cordialement
    O.LEFEVRE
    • Déplacé Alex Petrescu jeudi 11 février 2010 09:43 sql server (Origine :Visual Studio - en général)
    mercredi 10 février 2010 13:28

Réponses

Toutes les réponses

  • Bonjour Olivier,

    Non, il n'existe pas à ma connaissance de moyen de faire une FK entre 2 tables de 2 bases différentes.

    Par contre, ce qui est réalisable, c'est soit de gérer ce genre de contrainte (par des triggers ou des check constraints), soit de faire une copie de la table référencée dans la 2ème base.
    Selon les scénarios, l'une ou l'autre des approches peut être privilégiée.

    Je ne sais pas si cela fera l'affaire pour vous, mais si vous voulez en savoir plus sur la version avec une contrainte (trigger ou check constraint), je vous invite à lire les articles suivants :
    http://forums.databasejournal.com/showthread.php?t=9280
    http://oneidia.blogspot.com/2008/03/maintaining-cross-database-referential.html

    Cordialement,

    Thomas
    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    mercredi 10 février 2010 15:03
  • Au passage, je pense que ce thread est à déplacer dans le forum SQL Server au lieu de Visual Studio.

    Cordialement,

    Thomas


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    mercredi 10 février 2010 15:07
  • Bonjour,

    effectivement ce thread est à déplacer dans le forum SQL mais je n"'ai pas trouvé le moyen de le faire ...

    En ce qui concerne ma question je pense opter pour la version check constraint en effet mon problème est que notre base contient plus de 400 tables, j'aimerais donc la scinder en plusieurs bases mais des tables sont communes et je ne désire pas dupliquer les informations... D' où le check constraint ...
    Je vais donc lire les articles que vous m'avez proposé.


    Cordialement,

    Olivier
    jeudi 11 février 2010 07:44
  • Bonjour,

     

    J’ai déplacé le thread dans la section SQL Server.

     

    EP01, vous essayez d’obtenir un plus de performance avec votre démarche de créer plusieurs bases de données ? S’agit-t-il d’une question d’organisation de la structure des données ? Si la logique des données demande que vous avez des références entre les tables, je ne vois aucune raison pour avoir des bases de données différentes. Si votre problème vient du coté hardware, peut-être la solution sera d’essayer d’implementer une base de données distribuée.

     

    Cordialement,

    Alex


    Alex Petrescu - MSFT
    jeudi 11 février 2010 10:33
  • Bonjour,

    Utilisez pour cela les schémas, qui vous permettent de regrouper logiquement des tables dans la même base de données.
    Cela vous permettra donc d'alléger vos traitements, mais vous serez obligé de passer les données de chacune de vos bases dans une seule base destination

    @++ ;)
    vendredi 12 février 2010 06:46