En complément des instructions Transact-SQL dans sqlcmd, vous pouvez également utiliser les commandes ci-dessous :
|
GO [count]
|
:List
|
|
[:] RESET
|
:Error
|
|
[:] ED
|
:Out
|
|
[:] !!
|
:Perftrace
|
|
[:] QUIT
|
:Connect
|
|
[:] EXIT
|
:On Error
|
|
:r
|
:Help
|
|
:ServerList
|
:XML [ON | OFF]
|
|
:Setvar
|
:Listvar
|
Tenez compte des éléments suivants lorsque vous utilisez des commandes sqlcmd :
-
Toutes les commandes sqlcmd, à l'exception de GO, doivent posséder deux points (:) comme préfixe.
Important : |
|---|
|
Pour assurer la compatibilité descendante avec les scripts osql existants, certaines commandes sont reconnues sans les deux-points. Cela est indiqué par le [:].
|
-
Les commandes sqlcmd ne sont reconnues que si elles apparaissent au début d'une ligne.
-
Toutes les commandes sqlcmd ne respectent pas la casse.
-
Chaque commande doit figurer sur une ligne séparée. Une commande ne peut pas être suivie d'une instruction Transact-SQL ou d'une autre commande.
-
Les commandes sont exécutées immédiatement. Elles ne sont pas placées dans le tampon d'exécution contrairement aux instructions Transact-SQL.
-
Commandes d'édition
-
- [:] ED
-
Démarre l'éditeur de texte. Cet éditeur peut être employé pour modifier le traitementTransact-SQL en cours, ou le dernier traitement exécuté. Pour modifier le dernier traitement exécuté, la commande ED doit être tapée immédiatement après la fin de l'exécution du dernier traitement.
L'éditeur de texte est défini dans la variable d'environnement SQLCMDEDITOR. L'éditeur par défaut est « edit ». Pour modifier l'éditeur, définissez la variable SQLCMDEDITOR. Par exemple, pour choisir l'éditeur Bloc-notes Microsoft, à l'invite de commandes, tapez :
SET SQLCMDEDITOR=notepad
- [:] RESET
-
Vide le cache d'instruction.
- :List
-
Imprime le contenu du cache d'instruction.
-
Variables
-
-
:Setvar <var> [ "value" ]
-
Définit des variables de script sqlcmd. Les variables de script possèdent le format suivant : $(VARNAME).
Les noms de variable ne respectent pas la casse.
Les variables de script peuvent être définies comme suit :
-
Implicitement à l'aide d'une option de ligne de commande. Par exemple, l'option -l définit la variable sqlcmd SQLCMDLOGINTIMEOUT.
-
Explicitement à l'aide de la commande :Setvar.
-
En définissant une variable d'environnement avant d'exécuter sqlcmd.
Remarque : |
|---|
|
L'option -X empêche le transfert des variables d'environnement vers sqlcmd.
|
Si une variable définie à l'aide de :Setvar et une variable d'environnement possèdent le même nom, 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, placez la valeur entre guillemets. Si aucune valeur n'est spécifiée pour une variable de script, cette dernière est supprimée.
- :Listvar
-
Affiche la liste des variables de script actuellement définies.
Remarque : |
|---|
|
Seules les variables de script qui sont définies par sqlcmd et celles qui sont définies avec la commande :Setvar s'affichent.
|
-
Commandes de sortie
-
-
:Error
<
filename
>|
STDERR|STDOUT
-
Redirige l'ensemble de la sortie d'erreur dans le fichier spécifié par file name, vers stderr ou vers stdout. La commande Error peut apparaître plusieurs fois dans un script. Par défaut, la sortie d'erreur est envoyée à stderr.
-
file name
-
Crée et ouvre un fichier destiné à recevoir la sortie. Si le fichier existe déjà, il est tronqué à zéro octet. Si le fichier n'est pas disponible car des autorisations sont requises, ou pour d'autres raisons, la sortie n'est pas modifiée, et elle est envoyée à la dernière destination spécifiée ou à la destination par défaut.
-
STDERR
-
Dirige la sortie d'erreur vers le flux stderr. Si cette destination a été redirigée, la cible de cette redirection reçoit la sortie d'erreur.
-
STDOUT
-
Fait basculer la sortie d'erreur vers le flux stdout. Si cette destination a été redirigée, la cible de cette redirection reçoit la sortie d'erreur.
-
:Out < filename>| STDERR| STDOUT
-
Crée et redirige l'ensemble des résultats de requête dans le fichier spécifié par file name, vers stderr ou vers stdout. Par défaut, la sortie est envoyée à stdout. Si le fichier existe déjà, il est tronqué à zéro octet. La commande Out peut apparaître plusieurs fois dans un script.
-
:Perftrace < filename>| STDERR| STDOUT
-
Crée et redirige l'ensemble des informations de traces de performances dans le fichier spécifié par file name, vers stderr ou vers stdout. Par défaut, la sortie de traces de performances est envoyée à stdout. Si le fichier existe déjà, il est tronqué à zéro octet. La commande Perftrace peut apparaître plusieurs fois dans un script.
-
Commandes de contrôle d'exécution
-
-
: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.
Lorsque l'option exit est employée, sqlcmd se termine avec la valeur d'erreur appropriée.
Lorsque l'option ignore est employée, sqlcmd ignore l'erreur et poursuit l'exécution du traitement ou du script. Par défaut, un message d'erreur est imprimé.
- [:] QUIT
-
Provoque la fin de sqlcmd.
- [:] EXIT[ (statement) ]
-
Vous permet d'utiliser le résultat d'une instruction SELECT comme valeur de retour de sqlcmd. La première colonne de la première ligne de résultats est convertie en un entier de 4 octets (entier long). MS-DOS transmet l'octet de poids faible au processus parent ou au niveau erreur du système d'exploitation. Windows 200x transmet la totalité de l'entier de 4 octets. La syntaxe de cette commande est la suivante :
:EXIT(query)
Par exemple :
:EXIT(SELECT @@ROWCOUNT)
Vous pouvez également inclure le paramètre EXIT dans un fichier de commandes. Par exemple, à l'invite de commandes, tapez :
sqlcmd -Q "EXIT(SELECT COUNT(*) FROM '%1')"
L'utilitaire sqlcmd envoie tout le contenu entre parenthèses ( ) au serveur. Si une procédure stockée système sélectionne un ensemble et retourne une valeur, seule la sélection est retournée. L'instruction EXIT( ) sans information entre parenthèses exécute toutes les commandes qui la précèdent dans le traitement, puis se termine sans valeur de retour.
Lorsqu'une requête incorrecte est spécifiée, sqlcmd se termine sans valeur de retour.
Liste des formats EXIT :
N'exécute pas le traitement, puis se termine immédiatement sans retourner de valeur.
Exécute le traitement, puis se termine sans retourner de valeur.
Exécute le traitement qui inclut la requête, puis se termine après avoir retourné les résultats de la requête.
Si RAISERROR est utilisé dans un script sqlcmd et qu'un état 127 se produit, sqlcmd se termine et retourne l'ID du message au client. Par exemple :
RAISERROR(50001, 10, 127)
Cette erreur arrête l'exécution du script sqlcmd et envoie au client le message 50001.
Les valeurs retournées de -1 à -99 sont réservées à SQL Server ; sqlcmd définit les valeurs suivantes :
|
Valeurs retournées
|
Description
|
|---|
|
-100
|
Erreur rencontrée avant la sélection d'une valeur retournée.
|
|
-101
|
Aucune ligne trouvée lors de la sélection d'une valeur retournée.
|
|
-102
|
Erreur de conversion survenue lors de la sélection d'une valeur retournée.
|
-
GO [count]
-
GO indique la fin d'un traitement et l'exécution des commandes Transact-SQL placées dans le cache. Lors de la spécification d'une valeur pour count, les instructions mises en mémoire cache sont exécutées count fois, comme un traitement unique.
-
Commandes diverses
-
-
:r < filename>
-
Analyse les instructions Transact-SQL et commandes sqlcmd supplémentaires du fichier spécifié par <filename> dans le cache d'instruction.
Si le fichier contient des instructions Transact-SQL qui ne sont pas suivies de GO, vous devez entrer GO sur la ligne qui suit :r.
Remarque : |
|---|
|
<filename> est lu par rapport au répertoire de démarrage dans lequel sqlcmd a été exécuté.
|
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. Elle inclut le terminateur de traitement GO.
Remarque : |
|---|
|
Le nombre de lignes affichées en mode interactif augmente de 1 chaque fois qu'une commande :r est rencontrée. La commande :r apparaît dans la sortie de la commande list.
|
-
:Serverlist
-
Répertorie tous les serveurs configurés localement et les noms des serveurs émettant sur le réseau.
-
:Connect
server_name[\instance_name] [-l timeout] [-U user_name [-P password]]
-
Établit une connexion à une instance de SQL Server. Ferme également la connexion actuelle.
Options de délai :
|
0
|
attendre indéfiniment
|
|
n>0
|
attendre n secondes
|
La variable de script SQLCMDSERVER reflète la connexion active actuelle.
Si l'argument timeout n'est pas spécifié, la valeur de la variable SQLCMDLOGINTIMEOUT est la valeur par défaut.
Si seulement user_name est spécifié (en tant qu'option ou en tant que variable d'environnement), un message invite l'utilisateur à entrer un mot de passe. Cela ne s'applique pas si les variables d'environnement SQLCMDUSER ou SQLCMDPASSWORD ont été définies. Si ni les options ni les variables d'environnement ne sont fournies, le mode d'authentification Windows est employé pour se connecter. Par exemple, pour établir une connexion à une instance, instance1, de SQL Server, myserver, en utilisant à la sécurité intégrée, vous devez utiliser ce qui suit :
:connect myserver\instance1
Pour établir une connexion à l'instance par défaut de myserver en utilisant des variables de script, utilisez ce qui suit :
:setvar myusername test
:setvar myservername myserver
:connect $(myservername) $(myusername)
- [:] !!< command>
-
Exécute des commandes du système d'exploitation. 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. Exemple :
:!! Dir
Remarque : |
|---|
|
La commande est exécutée sur l'ordinateur sur lequel sqlcmd s'exécute.
|
-
:XML [ON | OFF]
-
Pour plus d'informations, consultez « Format de sortie XML », plus loin dans cette rubrique.
-
:Help
-
Répertorie les commandes sqlcmd avec une brève description de chaque commande.
Noms de fichiers sqlcmd
Les fichiers d'entrée sqlcmd peuvent être spécifiés avec l'option -i ou la commande :r. Les fichiers de sortie peuvent être spécifiés avec l'option -o ou les commandes :Error, :Out et :Perftrace. Voici quelques consignes relatives à l'utilisation de ces fichiers :
-
Les commandes :Error, :Out et :Perftrace doivent utiliser un <filename> séparé. Si le même <filename> est utilisé, les entrées des commandes peuvent être mélangées.
-
Si un fichier d'entrée qui est situé sur serveur distant est appelé à partir de sqlcmd sur un ordinateur local et que le fichier contient un chemin d'accès de fichier sur un lecteur tel que :out c:\OutputFile.txt, le fichier de sortie sera créé sur l'ordinateur local et non sur le serveur distant.
-
Les chemins d'accès de fichier valides sont les suivants : C:\<filename>, \\<Serveur>\<Partage$>\<filename> et "C:\Un dossier\<file name>". Si le chemin d'accès contient un espace, utilisez des guillemets.
-
Chaque nouvelle session sqlcmd écrasera les fichiers existants portant les mêmes noms.
Messages d'information
sqlcmd imprime un message d'information qui est envoyé par le serveur. Dans l'exemple suivant, après l'exécution des instructions Transact-SQL, un message d'information est imprimé.
À l'invite de commandes, tapez :
sqlcmd
At the sqlcmd prompt type:
USE AdventureWorks;
GO
Lorsque vous appuyez sur Entrée, le message d'information suivant s'affiche : « Le contexte de la base de données a changé ; il est maintenant 'AdventureWorks'. »
Format de sortie des requêtes Transact-SQL
sqlcmd imprime tout d'abord un en-tête de colonne qui contient les noms de colonne spécifiés dans la liste select. Les noms de colonne sont séparés avec le caractère SQLCMDCOLSEP. Par défaut, il s'agit d'un espace. Si le nom de colonne est plus court que la largeur de colonne, la sortie est complétée avec des espaces jusqu'à la colonne suivante.
Cette ligne est suivie d'un séparateur de ligne qui correspond à une série de tirets. La sortie suivante constitue un exemple.
Démarrez sqlcmd. À l'invite de commandes sqlcmd, tapez :
USE AdventureWorks;
SELECT TOP (2) ContactID, FirstName, LastName
FROM Person.Contact;
GO
Lorsque vous appuyez sur Entrée, l'ensemble de résultats suivant est retourné.
ContactID FirstName LastName
----------- ------------ ----------
1 Syed Abbas
2 Catherine Abel
(2 row(s) affected)
Bien que la colonne ContactID ne possède que 4 caractères de large, elle a été étendue pour contenir le nom de colonne plus long. Par défaut, la sortie se termine à 80 caractères. Cela peut être modifié à l'aide de l'option -w ou en définissant la variable de script SQLCMDCOLWIDTH.
Format de sortie XML
La sortie XML qui est le résultat d'une clause FOR XML est générée, sans mise en forme, dans un flux continu.
Lorsque vous attendez une sortie XML, utilisez la commande suivante : :XML ON.
Remarque : |
|---|
sqlcmd retourne des messages d'erreur au format habituel. Notez que les messages d'erreur sont également une sortie dans le flux de texte XML au format XML. Avec :XML ON, sqlcmd n'affiche aucun message d'information.
|
Pour désactiver le mode XML, utilisez la commande suivante : :XML OFF.
La commande GO ne doit pas apparaître avant la commande XML OFF car cette dernière remet sqlcmd en sortie orientée ligne.
Les données XML (diffusées en continu) et les données d'ensemble de lignes ne peuvent être mélangées. Si la commande XML ON n'a pas été émise avant l'exécution d'une instruction Transact-SQL qui génère des flux XML, la sortie est incohérente. Si la commande XML ON a été émise, vous ne pouvez pas exécuter des instructions Transact-SQL qui produisent des ensembles de lignes réguliers.
Remarque : |
|---|
|
La commande :XML ne prend pas en charge l'instruction SET STATISTICS XML.
|