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

Développement SQL Server Discussion :

Problème Syntaxe Sqlcmd


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut Problème Syntaxe Sqlcmd
    Bonjour à tous,

    Je suis en train de développer un script pour une base SQL server 2005 express.

    Ce script a pour but de, tous les ans, créer une nouvelle base archivant toutes les données de l'année de la base principale.

    Je développe ce script dans un .bat mais j'ai un soucis de syntaxe apparemment ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sqlcmd -E -S Mon-Serveur -Q"DECLARE @SQL NVARCHAR(500);
    SET @SQL = 'Archives_'  + CONVERT(NVARCHAR(32), YEAR(CURRENT_TIMESTAMP)) 
    DECLARE @SQL1 NVARCHAR(500); 
    SET @SQL1 = 'RESTORE DATABASE [' + @SQL + '] FROM  DISK = N"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\PANORAMA_TEST.bak" WITH  FILE = 1,  MOVE N"PANORAMA_TEST" TO N"D:\SQL\PROD\' + @SQL + '.mdf",  MOVE N"PANORAMA_TEST_log" TO N"D:\SQL\PROD\' + @SQL + '_log.LDF",  NORECOVERY,  NOUNLOAD,  REPLACE,  STATS = 10'; EXEC(@SQL1);"
    Je vous explique :
    @SQL contient le nom de la nouvelle base, ici "Archives_2009"
    @SQL1 contient ma requete de restauration de ma nouvelle base avec la base principale.

    Lorsque j'execute mon .bat, j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <<C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\PANORAMA_TEST.bak" WITH  FILE = 1,
      MOVE N"PANORAMA_TEST" TO N"D:\SQL\PROD\' + @SQL + '.mdf",  MOVE N"PANORAMA_TEST_log" TO N"D:\SQL\PROD\' + @SQL + '_log.LDF",  NORECOVERY,
      NOUNLOAD,  REPLACE,  STATS = 10'; EXEC(@SQL1);">> : argument inattendu.

    Lorsque j'exécute ce code dans l'éditeur SQL Server, j'ai ces erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Msg*102, Niveau*15, État*1, Ligne*1
    Syntaxe incorrecte vers 'N'.
    Msg*319, Niveau*15, État*1, Ligne*1
    Syntaxe incorrecte près du mot clé «*with*». Si l'instruction est une expression de table commune ou une clause xmlnamespaces, l'instruction précédente doit se terminer par un point-virgule.
    Lorsque j'utilise la restauration sans passer par des variables, cette syntaxe fonctionne très bien, mais là je vous avoue que je suis un peu perdu =/

    Si quelqu'un a une idée ?

    Merci.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Encapsulez votre requête dans un fichier.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Exact, vous pouvez passer un fichier de requêtes SQL en paramètre à une commande SQLCMD, en utilisant le commutateur -i.
    Vous pouvez également récupérer la sortie de vos commandes dans un fichier texte avec le commutateur -o (commandes PRINT, résultat d'une commande DBCC CHECKDB par exemple ...)

    @++

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut
    Merci pour cette idée

    J'ai supprimé les "N" précédant les divers chemins, et maintenant ça fonctionne ... j'avais dû en oublier en route quand j'avais essayé de les effacer

    En tout cas grâce à vous, ce script sera beaucoup plus propre

    Bonne semaine à tous.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Normal les chaine de caractères SQL doivent être ebtourées d'apostrophes. Vous vous les entourez de guillemets... D'ou votre erreur.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut
    Il n'était pas content lorsque je lui indiquais un chemin entre apostrophes, d'où les guillemets

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

Discussions similaires

  1. ajout clé étrangère problème syntaxe
    Par philippe281281 dans le forum Outils
    Réponses: 7
    Dernier message: 11/04/2006, 14h20
  2. Réponses: 1
    Dernier message: 05/04/2006, 14h22
  3. [Tableaux] problème syntaxe concaténation variable
    Par mussara dans le forum Langage
    Réponses: 3
    Dernier message: 01/03/2006, 11h24
  4. Problème syntaxe sql
    Par devdev dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 11/04/2005, 16h31
  5. problème syntaxe sql
    Par mpat dans le forum ASP
    Réponses: 6
    Dernier message: 01/02/2005, 19h28

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