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 :

Alias ou un truc du genre ?


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 199
    Billets dans le blog
    1
    Par défaut Alias ou un truc du genre ?
    Bonjour,

    J'ai deux bases de données sur une même instance.

    Exemple : DEVA et DEVB.
    J'ai des requêtes qui font des jointures ou des recopies entre les tables des deux bases.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select *
    from DEVA.dbo.TBL1
    inner join DEVB.dbo.TBL2 on ...
    where ...

    Maintenant, j'ai, sur la même instance de SQL Server, d'autres bases, par exemple TESTA et TESTB.

    Vous l'aurez compris, quand je suis content de mon script, je souhaite le prendre "tel quel" et le faire tourner sur TESTA et TESTB au lieu de DEVA et DEVB.
    Actuellement, à chaque livraison, je dois modifier à la main les fichiers SQL, au risque d'oublier un bout, ou d'écraser par mégarde une modification.

    Je cherche donc s'il est possible, de manière simple et efficace de faire une sorte d'alias d'une base de données quand on l'appelle depuis une certaine base de donnée.

    Par exemple un truc du genre :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    use [DEVA]
    go
     
    create alias [BDD_B] for [DEVB];
    go

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    use [TESTA]
    go
     
    create alias [BDD_B] for [TESTB];
    go

    Puis mon script, qui tournerait dans DEVA ou TESTA deviendrait :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select *
    from dbo.TBL1
    inner join BDD_B.dbo.TBL2 on ...
    where ...

    Est-ce que ça existe ?

    Une solution probablement plus propre serait de recopier la base "B" en tant que schema dans la base "A", mais je préfère conserver deux bases distinctes.

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 643
    Par défaut
    Salut à tous.

    Il n'y a pas d'alias de base de données utilisable dans les requêtes T-SQL.
    Sinon, il existe les SYNONYM qui permettent de faire cela.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    USE TESTA;
    GO
     
    CREATE SYNONYM dbo.TBL2 FOR TESTB.dbo.TBL2;
    Et pour le tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM dbo.TBL1
    INNER JOIN dbo.TBL2 ON ...
    Il n'y a aucune référence à la base externe dans le script.
    Seul le SYNONYM change selon l'environnement.
    Il y a juste un inconvénient, il faut créer un SYNONYM par objet.

  3. #3
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 199
    Billets dans le blog
    1
    Par défaut
    Merci Artemus24 pour ta réponse.

    C'est un peu la réponse que je redoutais

    Je pense que je vais partir là-dessus, c'est toujour plus propre que d'avoir des noms de base en dur dans mes scripts.

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

Discussions similaires

  1. [AC-2003] Collage spécial ou truc dans le genre
    Par HenriJ dans le forum Access
    Réponses: 5
    Dernier message: 14/12/2013, 17h16
  2. Modifier un truc genre JLabel situé "ailleurs"?
    Par orphee03 dans le forum Débuter
    Réponses: 5
    Dernier message: 19/09/2013, 08h18
  3. Truc genre WshShell.GetCurrentScript ?
    Par Celestus dans le forum VBScript
    Réponses: 2
    Dernier message: 27/05/2008, 10h13
  4. Keypress, ou un truc du genre.. ^^
    Par GeDeon35 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 24/01/2008, 10h03
  5. [DOM] insérer qqch du genre <truc:machin /> avec un attribut dans le DOM
    Par pekka77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/06/2006, 14h43

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