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 :

Changer de base à l'intérieure d une instance dans un script


Sujet :

MS SQL Server

  1. #1
    Membre régulier

    Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2004
    Messages : 130
    Points : 99
    Points
    99
    Par défaut Changer de base à l'intérieure d une instance dans un script
    Bonjour,

    Soit une instance avec les bases: master (..),db1,db2

    Je me connecte sous master, j'extraie le nom des bases à partir de sysdatbases.

    Comment puis me balader de master vers db1 puis vers db2?

    j'ai essayé le use @variable conseillé sur le site mais cela ne fonctionne pas... damned

    Dois je faire un isql et me connecter à chaque base (ce serait triste) ?

    Merci de votre aide

    Patrick

  2. #2
    Membre régulier

    Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2004
    Messages : 130
    Points : 99
    Points
    99
    Par défaut
    Bjr,

    on peut contourner le problème de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    declare @v1 varchar(20),
    	@cmd varchar(255)
    set @v1='Northwind'
    set @cmd = 'select * from ' + @v1+'..sysobjects '
    print @cmd
     
    execute (@cmd)
    mais comment puis je introduire dans la clause where : where xtype='U '

    mon problème est de dupliquer les simples quotes

    merci pour les tuyaux

    patrick
    [Merci d'utiliser les balises codes][Par WOLO Laurent]

  3. #3
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    C'est normale, dans la version 2000 de SQL Serveur, Use reçoit une constante et non une variable !
    Cela ne te suffit-il pas de préfixer par le nom des objets par celui de la base de données visée ?
    Vous pouvez également utiliser cette variante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Declare @sql varchar(80),
                @MaBase varchar(30)
     
    SET @MaBase='MabaseDeDonnées'
    SET @sql='Use ' + @MaBase
    EXEC @sql

  4. #4
    Membre régulier

    Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2004
    Messages : 130
    Points : 99
    Points
    99
    Par défaut
    Bonjour Laurent, tu m'avais dépanner pour l'insertion dans une table du résultat d'une procédure stockée qui renvoyait un champ 'unallocated size'....
    Tes '[' fonctionnent parfaitement...

    bon pour le cas d'aujourd'hui je voudrais valoriser une variable @cmd par un

    set @cmd = 'select * from ' + @v1+'..sysobjects where xtype=' 'U ' '

    Je me plante dans la clause where , problème de quote quote (gaffe à la grippe aviare)

    si tu as un tuyau....

    merci

    parick

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Citation Envoyé par Labienus
    set @cmd = 'select * from ' + @v1+'..sysobjects where xtype=' 'U ' '

    Je me plante dans la clause where , problème de quote quote (gaffe à la grippe aviare)

    si tu as un tuyau....

    merci
    Essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set @cmd = 'select * from ' + @v1+'..sysobjects where xtype=' + '''U'''

Discussions similaires

  1. Lister noms bases et tailles d'une instance
    Par mezvin dans le forum Administration
    Réponses: 8
    Dernier message: 07/02/2018, 17h34
  2. Réponses: 14
    Dernier message: 23/04/2012, 22h32
  3. Changer le JPanel à l'intérieur d'une JFrame
    Par Yakka dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 11/05/2011, 22h47
  4. Detruire une instance dans son constructeur
    Par Gorgo13 dans le forum C++
    Réponses: 15
    Dernier message: 07/07/2008, 14h00
  5. Réponses: 7
    Dernier message: 18/04/2008, 20h07

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