Partager via


Modification des scripts SQLCMD dans l'Éditeur Transact-SQL

Lorsque vous écrivez ou modifiez des scripts dans l'éditeur Transact-SQL, vous pouvez utiliser un mélange de commandes Transact-SQL et SQLCMD si vous activez en premier le mode SQLCMD.Pour plus d'informations, consultez Procédure : activer le mode SQLCMD dans l'éditeur Transact-SQL.

Écriture et modification des scripts SQLCMD

Si vous souhaitez inclure des commandes SQLCMD et des commandes Transact-SQL dans le même script, vous devez vérifier que le script se conforme aux critères suivants :

  • 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 caractères de commentaires d'une seule ligne sont deux tirets (--) qui doivent être placés au début d'une ligne.Les caractères de commentaire empêchent l'exécution des commandes SQLCMD.

  • Avant chaque commande SQLCMD, vous devez placer deux-points au début d'une ligne pour établir une distinction nette avec les commandes Transact-SQL.Les seules exceptions sont les commandes !! et exit pour lesquelles les deux-points sont facultatifs.

  • Vous pouvez utiliser des variables d'environnement et des variables définies dans le cadre d'un script SQLCMD, mais vous ne pouvez pas utiliser de variables SQLCMD intégrées.

Syntaxe SQLCMD prise en charge

Vous pouvez utiliser les commandes suivantes :

  • :r nomfichier
    Analyse les instructions Transact-SQL supplémentaires et les commandes SQLCMD à partir du fichier spécifié par nomfichier dans le cache d'instruction. La lecture de nomfichier est relative au répertoire de démarrage pour Visual Studio.Le fichier est lu et exécuté après la rencontre d'un terminateur de traitement.Vous pouvez émettre plusieurs commandes :r.Le fichier peut inclure une commande SQLCMD, notamment le terminateur de lot défini dans Outils, Options.Vous pouvez utiliser :r dans un script de pré-déploiement ou de post-déploiement pour inclure d'autres scripts.

  • :setvar Variable Value
    Définit des variables de script.Les variables de script possèdent le format suivant :$(Variable).Les noms de variable ne respectent pas la casse.Si une variable définie à l'aide de :Setvar possède le même nom qu'une variable d'environnement, la variable définie à l'aide de :setvar est prioritaire.Les noms de variable ne doivent pas contenir de caractères espace.Les noms de variables ne peuvent pas posséder la même forme qu'une expression variable, telle que $(var).Si une valeur de chaîne de la variable de script contient des espaces, vous devez la placer entre guillemets.Si aucune valeur n'est spécifiée pour une variable de script, cette dernière est supprimée.

  • :connect ServerName[\InstanceName] [-l Timeout] [-U UserName [-P Password]]
    Se connecte à une instance de SQL Server et ferme la connexion actuelle après que le nombre de secondes spécifié par Timeout se soit écoulé.Vous pouvez spécifier "-l 0" pour un délai d'attente infini ou un nombre positif de secondes, tel que "-l 30".Si vous fournissez aucune option ni de variables d'environnement pour UserName et Password, le mode d'authentification Windows est utilisé pour se connecter. Lorsque vous exécutez la commande SQLCMD connect dans l'éditeur Transact-SQL, le système vous invite néanmoins à vous connecter à un serveur de base de données avec la fenêtre Se connecter au moteur de base de données.

  • :on error [exit | ignore]
    Définit l'action à effectuer lorsqu'une erreur se produit en cours de script ou d'exécution d'un traitement.Si vous utilisez l'option exit, l'exécution s'arrête avec la valeur d'erreur appropriée.Si vous utilisez l'option ignore, l'éditeur Transact-SQL ignore l'erreur et continue d'exécuter le lot ou le script.Par défaut, un message d'erreur est imprimé.

  • :out Filename | stderr | stdout
    Redirigez tous les résultats de requête vers le fichier spécifié par Filename ou vers l'onglet Messages.(Dans Visual Studio, stderr et stdout envoient la sortie vers l'onglet Messages). La commande out peut apparaître plusieurs fois dans un script.Par défaut, la sortie est envoyée à l'onglet Messages.Si un Filename est spécifié, Visual Studio crée ou ouvre un fichier pour recevoir les résultats de la requête.Si le fichier existe déjà, il est tronqué à zéro octet avant d'écrire la sortie.

  • :error Filename | stderr | stdout
    Redirigez toute la sortie d'erreur vers le fichier spécifié par Filename ou vers l'onglet Messages.(Dans Visual Studio, stderr et stdout envoient la sortie vers l'onglet Messages).  La commande error peut apparaître plusieurs fois dans un script.Par défaut, la sortie d'erreur est envoyée à stderr.Si un Filename est spécifié, Visual Studio crée ou ouvre un fichier pour recevoir le message d'erreur.Si le fichier existe déjà, il est tronqué à zéro octet avant d'écrire le message d'erreur.

  • [:]exit
    Arrête le lot actuel sans l'exécuter ou retourner une valeur.

  • [:]exit()
    Exécute le lot, puis se termine sans retourner de valeur.

  • [:]exit(Requête)
    Exécute le lot (notamment la Requête), retourne les résultats de la Requête puis s'arrête.

  • [:]!!Commande de système d'exploitation
    Exécute des commandes de système d'exploitation sur l'ordinateur qui exécute Visual Studio.Pour exécuter une commande du système d'exploitation, commencez une ligne par deux points d'exclamation (!!) suivis de la commande du système d'exploitation.

Notes

Comme vous ne démarrez pas SQLCMD à partir de la ligne de commande, l'exécution de l'Éditeur Transact-SQL en mode SQLCMD est limitée.Vous ne pouvez pas transmettre des paramètres de ligne de commande tels que des variables, et, comme l'éditeur Transact-SQL n'a pas la possibilité de répondre aux invites du système d'exploitation, vous ne devez pas exécuter d'instructions interactives.

Les commandes SQLCMD qui ne sont pas répertoriées ci-dessus ne sont pas prises en charge dans l'Éditeur Transact-SQL.Lorsqu'un script contenant des mots clés SQLCMD qui ne sont pas pris en charge est exécuté, l'Éditeur Transact-SQL envoie un message Command <unsupported command> is not supported. String was not processed. à 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.

Codage en couleurs dans les scripts SQLCMD

Lorsque le Mode SQLCMD est activé, les scripts sont codés par couleur.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é.

Exemples

L'exemple suivant utilise des instructions SQLCMD pour créer un dossier de sortie nommé c:\TempSqlcmdOutput et un fichier de sortie nommés testoutput.txt.L'exemple exécute également deux instructions Transact-SQL SELECT et une autre commande SQLCMD pour imprimer le répertoire actif du programme Visual Studio.Le fichier résultant contient la sortie du message provenant de l'instruction DIR, suivie des résultats des instructions Transact-SQL.Cet exemple suppose qu'une connexion à une instance de SQL Server a déjà été établie et l'activation du Mode SQLCMD.

!!mkdir c:\TempSqlcmdOutput
:out c:\TempSqlCmdOutput\testoutput.txt
select @@VERSION as 'Server Version'
!!dir
GO
select @@SERVERNAME as 'Server Name'
GO 4

Voir aussi

Tâches

Procédure : exécuter une requête

Procédure : définir les options de résultats et d'exécution de requête

Concepts

Vue d'ensemble des résultats de requête