Modification de scripts SQLCMD à l'aide de l'Éditeur de requête

Mis à jour : 17 juillet 2006

Grâce à l'Éditeur de requête Microsoft SQL Server, vous pouvez écrire et modifier des requêtes en tant que scripts SQLCMD. Dans l'Éditeur de requête, les scripts SQLCMD peuvent utiliser les mêmes fonctionnalités que tous les scripts Transact-SQL. Ces fonctionnalités incluent les suivantes :

  • codage en couleurs ;
  • exécution des scripts ;
  • contrôle de code source ;
  • analyse des scripts ;
  • Showplan.

Activation des scripts SQLCMD dans l'Éditeur de requête

Pour utiliser l'Éditeur de requête SQL Server afin d'écrire ou de modifier des scripts SQLCMD, vous devez activer le mode de script. Par défaut, il n'est pas activé dans l'Éditeur de requête. Vous pouvez l'activer en cliquant sur l'icône Mode SQLCMD dans la barre d'outils ou en sélectionnant Mode SQLCMD dans le menu Requête. Ces deux méthodes permettent d'activer les scripts SQLCMD pour la fenêtre active.

Pour basculer l'Éditeur de requête en mode SQLCMD

  1. Dans l'Explorateur d'objets, cliquez avec le bouton droit sur le serveur et choisissez Nouvelle requête pour ouvrir une nouvelle fenêtre de l'Éditeur de requête.

  2. Dans le menu Requête, cliquez sur Mode SQLCMD.

    L'Éditeur de requête exécute les instructions sqlcmd dans son contexte.

  3. Dans la barre d'outils Éditeur SQL, dans la liste Bases de données disponibles, sélectionnez AdventureWorks.

  4. Dans la fenêtre de l'Éditeur de requête, tapez les deux instructions Transact-SQL suivantes et l'instruction !!DIR sqlcmd :

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. Appuyez sur F5 pour exécuter toute la section d'instructions Transact-SQL et MS-DOS.

    Consultez les deux volets de résultats SQL générés par la première et la troisième instruction.

  6. Dans le volet Résultats, cliquez sur l'onglet Messages pour afficher les messages des trois instructions :

    • (6 ligne(s) affectée(s))
    • <Informations sur le répertoire>
    • (4 ligne(s) affectée(s))
ms174187.note(fr-fr,SQL.90).gifImportant :
Lorsque l'utilitaire sqlcmd est exécuté à partir de la ligne de commande, il permet une interaction totale avec le système d'exploitation. Lorsque vous utilisez l'Éditeur de requête en Mode SQLCMD, vous devez veiller à ne pas exécuter d'instructions interactives. L'Éditeur de requêtes ne peut pas répondre aux invites du système d'exploitation.

Pour plus d'informations sur l'exécution de SQLCMD, consultez Utilitaire sqlcmd ou suivez le didacticiel qui lui est consacré.

Activation des scripts SQLCMD par défaut

Pour activer les scripts SQLCMD par défaut, dans le menu Outils, sélectionnez Options, développez Exécution de la requête, SQL Server, cliquez sur la page Général, puis activez la case à cocher Par défaut, ouvrir les nouvelles requêtes en mode SQLCMD.

Écriture et modification de scripts SQLCMD

Une fois le mode de scripts activé, vous pouvez écrire des commandes SQLCMD et des instructions Transact-SQL. Les règles suivantes s'appliquent :

  • Les commandes SQLCMD doivent être la première instruction d'une ligne.
  • Une seule commande SQLCMD est autorisée par ligne.
  • Les commandes SQLCMD peuvent être précédées de commentaires ou d'espaces.
  • Les commandes SQLCMD placées entre des caractères de commentaires ne sont pas exécutées.
  • Les caractères de commentaires d'une seule ligne sont deux tirets (--) qui doivent être placés au début d'une ligne.
  • Les commandes du système d'exploitation doivent être précédées de deux points d'exclamation (!!). La commande avec deux points d'exclamation entraîne l'exécution de l'instruction qui suit les points d'exclamation avec le processeur de commandes cmd.exe. Le texte situé après !! est transmis en tant que paramètre à cmd.exe. La ligne de commande finale s'exécute donc en tant que : "%SystemRoot%\system32\cmd.exe /c <text after !!>".
  • Pour distinguer clairement les commandes SQLCMD des commandes Transact-SQL, toutes les commandes SQLCMD doivent être précédées d'un symbole deux-points (:).
  • La commande GO peut être utilisée sans préfixe, ou bien précédée de !!:
  • L'Éditeur de requête prend en charge les variables d'environnement et les variables définies dans un script SQLCMD, mais il ne prend pas en charge les variables SQLCMD ou osql intégrées.
ms174187.Caution(fr-fr,SQL.90).gifAttention :
SQL Server Management Studio utilise Microsoft .NET SqlClient pour l'exécution en mode régulier et SQLCMD. Lorsqu'il est exécuté à partir de la ligne de commande, SQLCMD utilise le fournisseur OLE DB. Dans la mesure où des options par défaut peuvent s'appliquer, il est possible d'obtenir un comportement différent pendant l'exécution de la même requête en mode SQLCMD SQL Server Management Studio et dans l'utilitaire SQLCMD.

Syntaxe SQLCMD prise en charge

L'Éditeur de requête prend en charge les mots clés de script SQLCMD suivants :

[!!:]GO[count]

!! <command>

:exit(statement)

:Quit

:r <filename>

:setvar <var> <value>

:connect server[\instance] [-l login_timeout] [-U user [-P password]]

:on error [ignore|exit]

:error <filename>|stderr|stdout

:out <filename>|stderr|stdout

ms174187.note(fr-fr,SQL.90).gifRemarque :
Pour :error et :out, stderr et stdout envoient la sortie dans l'onglet des messages.

Les commandes SQLCMD qui ne sont pas répertoriées ci-dessus ne sont pas prises en charge dans l'Éditeur de requête. Lorsqu'un script contenant des mots clés SQLCMD qui ne sont pas pris en charge est exécuté, l'Éditeur de requête envoie un message « Commande <commande ignorée> ignorée » à la destination pour chaque mot clé non pris en charge. Le script s'exécute correctement mais les commandes non prises en charge sont ignorées.

ms174187.Caution(fr-fr,SQL.90).gifAttention :
Étant donné que vous ne démarrez pas SQLCMD à partir de la ligne de commande, l'exécution de l'Éditeur de requête en mode SQLCMD est quelque peu limitée. Vous ne pouvez pas transmettre des paramètres de ligne de commande tels que des variables, et, comme l'éditeur de requête n'a pas la possibilité de répondre aux invites du système d'exploitation, vous ne devez pas exécuter d'instructions interactives.

Codage en couleurs dans les scripts SQLCMD

Lorsque les scripts SQLCMD sont activés, les scripts sont codés en couleurs. Le codage en couleurs des mots clés Transact-SQL reste inchangé. Les commandes SQLCMD sont présentées avec un arrière-plan ombré.

Exemple

L'exemple suivant utilise une instruction sqlcmd pour créer un fichier de sortie nommé testoutput.txt et exécute deux instructions Transact-SQL SELECT ainsi qu'une commande du système d'exploitation (pour imprimer le répertoire en cours). Le fichier résultant contient la sortie du message provenant de l'instruction DIR, suivie des résultats des instructions Transact-SQL.

:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version'
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name'
GO

Voir aussi

Autres ressources

Utilitaire sqlcmd
Didacticiel de SQL Server Management Studio

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

17 juillet 2006

Nouveau contenu :
  • Ajout de la procédure pour basculer l'Éditeur de requête en mode SQLCMD

5 décembre 2005

Contenu modifié :
  • Correction de la syntaxe relative à la commande GO.
  • Ajout de l'exemple.
  • Fusion du contenu de la rubrique sur le mode SQLCMD