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

Administration SQL Server Discussion :

Erreur de syntaxe backup


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut Erreur de syntaxe backup
    Bonjour a tous
    voici le probleme, nous avons un sql server 2005 et plusieurs bases de données.
    2 d'entres elles sont de la forme:

    ePO4_TC-ANTIVIRUS

    C'est a dire avec un tirait au beau milieu.
    A cause du tirait la commande backup database nom...plante avec l'erreur:
    sintaxe incorecte au niveau du -
    Les autres bases sans tirait se backup sans problemes.

    Quelqu'un a deja vu ça? J'ai essayer un escape caracter mais j'y arrive pas.
    Merci pour votre aide.

    Salut

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Entourez le nom de votre base avec des guillements ou des crochets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BACKUP DATABASE [ePO4_TC-ANTIVIRUS] TO ... 
    BACKUP DATABASE "ePO4_TC-ANTIVIRUS" TO ...
    ++

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Bonjour
    ok individuellement ça marche.
    Maintenant j'ai le probleme de faire marcher ce script, car je voudrais faire un backup de toutes mes bases:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    DECLARE @name NVARCHAR(MAX) -- Nombre de la base de datos 
    DECLARE @path NVARCHAR(MAX) -- Ruta en donde se guardaran los backups
    DECLARE @fileName NVARCHAR(MAX) -- Nombre de archivo para los backups
    DECLARE @fileDate VARCHAR(20) -- fecha usada para el nombre de archivo
    DECLARE @msgMail NVARCHAR(MAX) -- usado para report de backups enviado por mail
    DECLARE @estado VARCHAR (20) -- variable de control de backups
    DECLARE @shortName VARCHAR (35)--250
    DECLARE @startDate DATETIME
    DECLARE @endDate DATETIME
    DECLARE @subStart DATETIME
    DECLARE @subEnd DATETIME
    DECLARE @totalFiles INT
    DECLARE @totalError INT
    DECLARE @subjectMsg VARCHAR(256)
    SET @path = 'G:\Backup\'
    SET @startDate = CONVERT(VARCHAR(24), GETDATE(), 113)
    SET @endDate = @startDate;
    SET @subStart = @startDate;
    SET @subEnd = @startDate;
    SET @totalFiles = 0
    SET @totalError = 0
     
    SET @fileDate = CONVERT(VARCHAR(4), YEAR(GETDATE()))+'-'
    + CONVERT(VARCHAR(2), MONTH(GETDATE()))
    +'-'+CONVERT(VARCHAR(2), DAY(GETDATE()))
     
     
     
    DECLARE db_cursor CURSOR FOR 
    SELECT name
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb') 
     
    OPEN db_cursor  
    FETCH NEXT FROM db_cursor INTO @name  
     
    WHILE @@FETCH_STATUS = 0  
    BEGIN  
     
           SET @fileName = @path + @name + '_' + @fileDate + '.bak' 
           BACKUP DATABASE @name TO DISK = @fileName WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD
     
     
           FETCH NEXT FROM db_cursor INTO @name  
    END  
     
    CLOSE db_cursor
    Je supose que pour arriver au meme resultat que tu proposais, il faut mettre des " ou [ ici:

    Et bien ça me donne erreur aussi.
    D'avance merci

  4. #4
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Moi je modifierais la ligne de code suivante en utilisant la fonction QUOTENAME :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DECLARE db_cursor CURSOR FOR
    SELECT QUOTENAME(name)
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb') 
    ...
    Pensez également à désallouer votre curseur avec DEALLOCATE

    ++

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Bonjour de nouveau

    et bien ça marche pas:

    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
    DECLARE db_cursor CURSOR FOR 
    SELECT QUOTENAME(name)
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb','ePO4_ATC-ANTIVIRUS') 
     
    OPEN db_cursor  
    FETCH NEXT FROM db_cursor INTO @name  
     
    WHILE @@FETCH_STATUS = 0  
    BEGIN  
     
          SET @fileName = @path + @name + '_' + @fileDate + '.bak' 
          BACKUP DATABASE @name TO DISK = @fileName WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD
     
           FETCH NEXT FROM db_cursor INTO @name  
    END  
     
    CLOSE db_cursor

    Comment je peux faire pour voir la valeur des variables? Comme un echo
    J'aimerais pour savoir quelles valeurs se trouvent dans les variables.
    le nouveau message d'erreur est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ejecutado como usuario: ATC\Administrador. No se puede crear el proceso para el paso 1 del trabajo 0xC706C1E3006F63469108EB081CBC2923 (motivo: El sistema no puede hallar el archivo especificado).  Error en el paso.
    Traduction: Ne peux pas creer le process pour le pas 1 du job ..... le system ne trouve pas le fichier specifié.

    D'avance merci

  6. #6
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Essayez avec ceci :

    Vos variables sont en NVARCHAR(MAX) et vous n'avez pas besoin de ce type de données pour le nom de la base par exemple. Un type SYSNAME suffit amplement.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    DECLARE @name NVARCHAR(MAX) -- Nombre de la base de datos 
    DECLARE @path NVARCHAR(MAX) -- Ruta en donde se guardaran los backups
    DECLARE @fileName NVARCHAR(MAX) -- Nombre de archivo para los backups
    DECLARE @fileDate VARCHAR(20) -- fecha usada para el nombre de archivo
    DECLARE @msgMail NVARCHAR(MAX) -- usado para report de backups enviado por mail
    DECLARE @estado VARCHAR (20) -- variable de control de backups
    DECLARE @shortName VARCHAR (35)--250
    DECLARE @startDate DATETIME
    DECLARE @endDate DATETIME
    DECLARE @subStart DATETIME
    DECLARE @subEnd DATETIME
    DECLARE @totalFiles INT
    DECLARE @totalError INT
    DECLARE @subjectMsg VARCHAR(256)
    SET @path = 'E:\MSSQL\'
    SET @startDate = CONVERT(VARCHAR(24), GETDATE(), 113)
    SET @endDate = @startDate;
    SET @subStart = @startDate;
    SET @subEnd = @startDate;
    SET @totalFiles = 0
    SET @totalError = 0
     
    SET @fileDate = CONVERT(VARCHAR(4), YEAR(GETDATE()))+'-'
    + CONVERT(VARCHAR(2), MONTH(GETDATE()))
    +'-'+CONVERT(VARCHAR(2), DAY(GETDATE()))
     
     
     
    DECLARE db_cursor CURSOR FOR 
    SELECT name
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')  
     
    OPEN db_cursor  
    FETCH NEXT FROM db_cursor INTO @name  
     
    WHILE @@FETCH_STATUS = 0  
    BEGIN  
     
           SET @fileName = @path + @name + '_' + @fileDate + '.bak' 
           PRINT @fileName
           PRINT @name
           EXEC('BACKUP DATABASE [' + @name + '] TO DISK = ''' + @fileName + ''' WITH NOFORMAT, INIT, SKIP, NOREWIND, NOUNLOAD');
     
     
           FETCH NEXT FROM db_cursor INTO @name  
    END  
     
    CLOSE db_cursor
    DEALLOCATE db_cursor
    ++

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Bonjour
    ok cette fois c'est la bonne.
    Tout marche bien,
    merci beaucoup pour votre aide.
    Bon week end

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

Discussions similaires

  1. [Directives] Page blanche quand erreur de syntaxe
    Par syl2095 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 17/02/2006, 15h15
  2. [sql] erreur de syntaxe
    Par cmoa59 dans le forum JDBC
    Réponses: 14
    Dernier message: 03/05/2005, 11h41
  3. erreur de syntaxe en C++
    Par sergepmessa dans le forum C++
    Réponses: 6
    Dernier message: 11/03/2005, 18h15
  4. PHP SQL =>erreur de syntaxe (operateur absent)
    Par snipes dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 14h09
  5. erreur de syntaxe javascript dans ma page
    Par Oluha dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/02/2005, 14h53

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