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 :

Utilisation de USE conditionné [2005]


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Avril 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Utilisation de USE conditionné
    Bonjour,

    Quelqu'un sait comment ouvrir une Base de données après un test.
    Exemple : sur mon système A, j'ai une base Base1 et sur mon système B, une base Base2.
    Je souhaite n’écrire qu'un script.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IF (EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = 'Base1')) USE Base1
    IF (EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = 'Base2')) USE Base2
    Si le système ne trouve pas la base de données, il me plante un message :
    Could not locate entry in sysdatabases for database 'Base1'. No entry found with that name. Make sure that the name is entered correctly.

    Alors que le script suivant fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IF (EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = 'Base1')) Print 'Base1'
    IF (EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = 'Base2')) Print 'Base2'
    Si je suis sur le système B, il écrit bien "Base2" uniquement ! ! !

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Lorsque vous éxécutez votre script, il est d'abord analysé.
    La syntaxe du IF est correcte... ok... mais il n'est pas évalué... son contenu (en l'occurence USE Base 1) est donc analysé. Or, comme vous n'avez pas de Base1... l'analyse échoue avec le message que vous avez (même si lors de l'éxécution, cette partie ne sera en fait pas éxécutée à cause du IF qui n'est pas vrai).

    Dans quel contexte faites vous cela ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Avril 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    J'ai une application qui s’appuie sur la même structure de base de données, mais sur plusieurs serveurs différents. Chaque base porte un nom différent, et impossible d'en changer.
    Je souhaite créer un script (et un seul) qui effectue un certain nombre d'update.
    Selon le nom de la base qui existe sur le serveur (et que je teste par le IF ....) je fais le USE approprié.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF [Base1 existe] Use Base1
    ...
    If [BaseN existe] Use BaseN
    J'ai essayé également avec une variable qui récupère le nom de la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE @MaBd
    SET @MaBd (select nom_base from .... etc)
    USE @MaBd
    J'ai essayé aussi de constituer la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @LaBdAOuvrir ='USE [MaBd]'
    EXEC @LaBdAOuvrir
    ou sp_execute ....
    Mais le USE n'accepte pas de variable.....

    Merci d'une idée qui marche
    ;o)

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Une solution serait d'affecter à l'utilisateur une base de données par défaut.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Une solution serait d'affecter à l'utilisateur une base de données par défaut.
    C'est aussi ce que je ferais.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Avril 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    C'est donc ce que je ferai...
    D'nu autre côté, je n'ai que 4 instances. Je vais peut-être, même si intellectuellement moins jolin faire 4 scripts ! (seul le Use changera).

    Merci de vos réponses.

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

Discussions similaires

  1. [procedure stockée] utilisation de use
    Par zekiller3 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/05/2007, 18h01
  2. Utilisation de Use Case
    Par Promeneur dans le forum Cas d'utilisation
    Réponses: 2
    Dernier message: 21/11/2006, 16h42
  3. [Optimisation] index non utilisé et using temporary
    Par jp_rennes dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/10/2006, 10h05
  4. De la pertinence de l'utilisation de "using"
    Par Christophe Charron dans le forum Outils
    Réponses: 5
    Dernier message: 30/08/2006, 15h58
  5. Utilisation de use strict et use warnings
    Par jmricatt dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2006, 13h40

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