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 :

Suppression dynamique des bases...


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 12
    Points : 11
    Points
    11
    Par défaut [RESOLU] Suppression dynamique des bases...
    Bonjour,

    J'essaie de supprimer toutes les bases d'une instance SQL avant de les recréer sans savoir le nombre et les noms des bases existantes.

    J'utilise donc la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    DECLARE @base nvarchar(50)
     
    DECLARE bases_cursor CURSOR FOR 
    SELECT name
    FROM master.dbo.sysdatabases
    WHERE status = 16
     
    OPEN bases_cursor
     
    FETCH NEXT FROM bases_cursor INTO @base
     
    WHILE @@FETCH_STATUS = 0
    BEGIN
    	DROP DATABASE @base
     
    	FETCH NEXT FROM bases_cursor INTO @base
    END
     
    CLOSE bases_cursor
    DEALLOCATE bases_cursor
    Mais il n'accepte pas le DROP DATABASE avec une variable derrière au lieu d'un vrai nom de base...Le message d'erreur est le suivant :
    Server: Msg 170, Level 15, State 1, Line 15
    Line 15: Incorrect syntax near '@base'.


    Quelqu'un aurait une idée ??? Merci d'avance en tout cas.

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 554
    Points
    19 554
    Billets dans le blog
    25
    Par défaut
    C'est quoi le 16 ? vous voulez virer que celles qui ont un flag torn page detection à VRAI ? dans ce cas, il vaut mieux utiliser un masque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    DECLARE @base nvarchar(50)
     
    DECLARE bases_cursor CURSOR FOR
    SELECT name
    FROM master.dbo.sysdatabases
    WHERE status&16 = 16
     
    OPEN bases_cursor
     
    FETCH NEXT FROM bases_cursor INTO @base
     
    WHILE @@FETCH_STATUS = 0
    BEGIN
        DECLARE @sql varchar (40)
       SELECT @sql = 'DROP DATABASE '+@base
       exec sp_executesql @sql
     
       FETCH NEXT FROM bases_cursor INTO @base
    END
     
    CLOSE bases_cursor
    DEALLOCATE bases_cursor
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup Fadace !

    En fait c'est ça qui me manquait :

    SELECT @sql = 'DROP DATABASE '+@base
    exec sp_executesql @sql

    ça marche nickel avec ça.

    Pour le champs statut = 16 c'est pour virer seulement les bases non systèmes donc celles créées par les admins SQL.

    En tout cas j'ai découvert les masques ça me servira peut être un jour

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 554
    Points
    19 554
    Billets dans le blog
    25
    Par défaut
    remplacez le status = 16 par dbid <5
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    OK merci du conseil mais je pense que c'est plutot > 5 qu'il faut mettre
    J'ai pas envie qu'il me vire les bases systèmes même si ça doit pas être possible

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

Discussions similaires

  1. Ajout et suppression dynamique des textbox avec JavaScript en ASPx.
    Par zakarinalaw dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 29/04/2014, 14h32
  2. Talend open studio connection dynamique a des bases de donnees possible ?
    Par jj4822 dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 02/04/2014, 16h04
  3. Réponses: 6
    Dernier message: 19/11/2012, 20h40
  4. Réponses: 11
    Dernier message: 26/12/2009, 17h29
  5. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50

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