Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Base de données SQL dans Microsoft Fabric
sqlcmd est un utilitaire de ligne de commande pour l’exécution ad hoc et interactive d’instructions et de scripts Transact-SQL (T-SQL). Il automatise également les tâches de script T-SQL. Pour utiliser sqlcmd de manière interactive ou pour générer des fichiers de script pour sqlcmd, vous devez comprendre T-SQL. Vous pouvez utiliser sqlcmd de différentes manières. Par exemple:
Entrez des instructions T-SQL à partir d’une interface de ligne de commande (CLI). La console retourne les résultats.
Note
Dans Windows, vous pouvez ouvrir une fenêtre d’invite de commandes à l’aide
cmdde la zone de recherche Windows, puis sélectionner l’invite de commandes. Dans macOS et Linux, vous pouvez utiliser l’émulateur de terminal intégré.Tapez
sqlcmddans la console, suivi d’une liste d’options souhaitées, puis entrez. Pour obtenir la liste complète des options que sqlcmd prend en charge, consultez l’utilitaire sqlcmd.Soumettez une tâche sqlcmd soit en spécifiant une instruction T-SQL unique à exécuter, soit en indiquant à l’utilitaire un fichier texte contenant les instructions T-SQL à exécuter. La sortie est dirigée vers un fichier texte, mais peut également être affichée dans la console.
Mode SQLCMD dans SQL Server Management Studio (SSMS).
SQL Server Management Objects (SMO).
Travaux CmdExec de SQL Server Agent
Options sqlcmd courantes
L’option de serveur (
-S) identifie l’instance de Microsoft SQL Server à laquelle l’utilitaire sqlcmd se connecte.Les options d’authentification (
-E,-U, et-P) définissent les informations d’identification qu’utilise sqlcmd pour se connecter à l’instance de SQL Server.Note
L’option
-Eest la valeur par défaut et n’a pas besoin d’être spécifiée.Les options d’entrée (
-Q,-q, et-i) identifient l’emplacement de l’entrée dans sqlcmd.L’option de sortie (
-o) spécifie le fichier dans lequel sqlcmd écrit sa sortie.
Se connecter à l’utilitaire sqlcmd
Connexion à une instance par défaut à l’aide de l’authentification Windows pour exécuter de manière interactive des instructions T-SQL :
sqlcmd -S <ComputerName>Note
Dans l’exemple précédent,
-En’est pas spécifié, car il s’agit de la valeur par défaut. sqlcmd se connecte à l’instance par défaut à l’aide de l’authentification Windows.Connexion à une instance nommée à l’aide de l’authentification Windows pour exécuter de manière interactive des instructions T-SQL :
sqlcmd -S <ComputerName>\<InstanceName>or
sqlcmd -S .\<InstanceName>Connexion à une instance nommée en utilisant l'authentification Windows et définition des fichiers d'entrée et de sortie :
sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>Connexion à l'instance par défaut sur l'ordinateur local avec l'authentification Windows, exécution d'une requête et maintien de sqlcmd actif à la fin de la requête :
sqlcmd -q "SELECT * FROM AdventureWorks2025.Person.Person"Connexion à l'instance par défaut sur l'ordinateur local avec l'authentification Windows, exécution d'une requête, envoi de la sortie vers un fichier et fin de l'exécution de sqlcmd à la fin de la requête :
sqlcmd -Q "SELECT * FROM AdventureWorks2025.Person.Person" -o MyOutput.txtConnexion à une instance nommée à l’aide de l’authentification SQL Server pour exécuter des instructions T-SQL de manière interactive, avec sqlcmd invitant à entrer un mot de passe :
sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>Tip
Pour afficher la liste des options que l’utilitaire sqlcmd prend en charge, exécutez :
sqlcmd -?.
Exécuter des instructions Transact-SQL de manière interactive à l’aide de sqlcmd
Utilisez l’utilitaire sqlcmd de manière interactive pour exécuter des instructions T-SQL dans la console. Pour exécuter interactivement des instructions Transact-SQL à l’aide de sqlcmd, exécutez l’utilitaire sans utiliser les options -Q, -q, -Z ou -i pour spécifier des fichiers ou des requêtes d’entrée. Par exemple:
sqlcmd -S <ComputerName>\<InstanceName>
Lorsque vous exécutez la commande sans fichiers ou requêtes d’entrée, sqlcmd se connecte à l’instance spécifiée de SQL Server. Il affiche ensuite une nouvelle ligne avec un 1> trait de soulignement clignotant appelé le prompt sqlcmd. Le 1 signifie qu’il s’agit de la première ligne d’une instruction T-SQL. L’invite sqlcmd représente le point à partir duquel l’instruction T-SQL commence quand vous la tapez.
À l’invite sqlcmd, vous pouvez taper à la fois des instructions T-SQL et des commandes sqlcmd, comme GO et EXIT. Chaque instruction T-SQL passe dans une mémoire tampon appelée cache d’instructions. Ces instructions sont envoyées à SQL Server dès lors que vous avez tapé la commande GO et appuyé sur la touche ENTRÉE. Pour quitter sqlcmd, tapez EXIT ou QUIT au début d'une nouvelle ligne.
Pour effacer le cache d'instruction, tapez :RESET. La saisie de Ctrl+C entraîne la fermeture de sqlcmd .
Ctrl+C peut également être utilisé pour arrêter l’exécution du cache d’instructions après une GO commande.
Entrez une commande :ED à l’invite sqlcmd pour modifier les instructions T-SQL. L’éditeur s’ouvre et, après avoir modifié l’instruction T-SQL et fermé l’éditeur, l’instruction T-SQL révisée apparaît dans la fenêtre de commande. Entrez GO pour exécuter l’instruction T-SQL révisée.
Chaînes entre guillemets
Vous pouvez utiliser des caractères placés entre guillemets sans prétraitement supplémentaire, sauf que vous pouvez insérer des guillemets dans une chaîne en entrant deux guillemets consécutifs. SQL Server traite cette séquence de caractères comme un seul guillemet. (La traduction s’effectue toutefois sur le serveur). Les variables des scripts ne sont pas développées lorsqu’elles apparaissent au sein d’une chaîne.
Par exemple:
sqlcmd
PRINT "Length: 5"" 7'";
GO
Voici le jeu de résultats.
Length: 5" 7'
Chaînes qui s’étendent sur plusieurs lignes
sqlcmd prend en charge les chaînes qui s'étendent sur plusieurs lignes. Par exemple, l'instruction SELECT suivante s'étend sur plusieurs lignes mais exécute une seule chaîne lorsque vous saisissez GO puis appuyez sur ENTRÉE.
SELECT <First line>
FROM <Second line>
WHERE <Third line>;
GO
Exemple d’utilisation interactive de sqlcmd
Cet exemple montre ce que vous voyez lorsque vous exécutez sqlcmd de manière interactive.
Lorsque vous ouvrez une fenêtre de console dans Windows, vous pouvez voir une sortie similaire à l’exemple suivant :
C:\Temp\>
Cette ligne signifie que le dossier C:\Temp\ est le dossier actif. Si vous spécifiez un nom de fichier, le système d’exploitation recherche le fichier dans ce dossier.
Tapez sqlcmd pour vous connecter à l’instance par défaut de SQL Server sur l’ordinateur local. Le contenu de la fenêtre de console est le suivant :
C:\Temp>sqlcmd
1>
Cette sortie signifie que vous êtes connecté à l’instance de SQL Server.
sqlcmd est maintenant prêt à accepter les instructions T-SQL et les commandes sqlcmd . Le trait de soulignement clignotant après 1> est l’invite de commande sqlcmd. Il marque l’emplacement où les instructions et les commandes que vous tapez sont affichées. À présent, tapez USE AdventureWorks2025 et appuyez sur Entrée. Ensuite, tapez GO et appuyez sur Entrée. Le contenu de la console est le suivant :
sqlcmd
USE AdventureWorks2025;
GO
Voici le jeu de résultats.
Changed database context to 'AdventureWorks2025'.
1>
Le fait d’appuyer sur Entrée signale à sqlcmd de démarrer une nouvelle ligne. Appuyez sur Entrée après avoir tapé GO pour indiquer à sqlcmd d'envoyer l’instruction USE AdventureWorks2025 à l’instance de SQL Server.
sqlcmd retourne ensuite un message pour indiquer que l’instruction USE s’est terminée correctement. Il affiche une nouvelle invite 1> pour indiquer que vous pouvez entrer une nouvelle instruction ou commande.
L’exemple suivant montre ce que contient la console si vous tapez une SELECT instruction, une GO pour exécuter le SELECTet un EXIT pour quitter sqlcmd :
USE AdventureWorks2025;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Voici le jeu de résultats.
BusinessEntityID FirstName LastName
----------------- ---------- ------------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
Une fois la sortie générée par sqlcmd , elle réinitialise l’invite sqlcmd et affiche 1>. Tapez EXIT à l’invite de commande 1> pour quitter la session. Vous pouvez maintenant fermer la fenêtre de console en tapant une autre EXIT commande, suivie d’Entrée.
Créer un conteneur SQL Server et y effectuer une requête
Vous pouvez utiliser sqlcmd (Go) pour créer une instance de SQL Server dans un conteneur.
sqlcmd (Go) expose une create instruction pour spécifier une image conteneur et une sauvegarde SQL Server. Vous pouvez créer rapidement une instance SQL Server à des fins de développement, de débogage et d’analyse.
La commande suivante montre comment afficher toutes les options disponibles pour créer un conteneur SQL Server :
sqlcmd create mssql --help
La commande suivante crée une instance SQL Server à l’aide de la dernière version de SQL Server 2025 (17.x), puis restaure l’exemple de base de données Wide World Importers :
sqlcmd create mssql --accept-eula --tag 2025-latest --using https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak
Après avoir créé l’instance SQL Server, utilisez sqlcmd (Go) pour la gérer et l’interroger.
La commande suivante confirme la version de l’instance que vous avez créée :
sqlcmd query "SELECT @@version"
La commande suivante démarre une session interactive avec l’instance que vous avez créée :
sqlcmd query
La commande suivante répertorie les chaînes de connexion à utiliser pour vous connecter à l’instance que vous avez créée :
sqlcmd config connection-strings
Utilisez la commande suivante pour supprimer le conteneur lorsqu’il n’est plus nécessaire :
sqlcmd delete
Exécuter des fichiers de script Transact-SQL à l’aide de sqlcmd
Utilisez sqlcmd pour exécuter des fichiers de script de base de données. Il s’agit de fichiers texte contenant un mélange d’instructions T-SQL, de commandes sqlcmd et de variables de script. Pour plus d’informations sur la façon de générer des scripts, consultez Utiliser sqlcmd avec des variables de script. sqlcmd fonctionne avec les instructions, les commandes et les variables de script dans un fichier de script de manière similaire à son fonctionnement avec les instructions et les commandes que vous entrez de manière interactive. La principale différence est que sqlcmd lit le fichier d'entrée sans marquer de pause au lieu d'attendre que l'utilisateur entre les instructions, les commandes et les variables de script.
Vous pouvez créer des fichiers de script de base de données de différentes manières :
Générez et déboguez de manière interactive un ensemble d’instructions T-SQL dans SQL Server Management Studio, puis enregistrez le contenu de la fenêtre Requête en tant que fichier de script.
Créez un fichier texte qui contient des instructions T-SQL à l’aide d’un éditeur de texte, tel que le Bloc-notes.
Examples
A. Exécuter un script à l’aide de sqlcmd
Démarrez le Bloc-notes et tapez les instructions T-SQL suivantes :
USE AdventureWorks2025;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Créez un dossier intitulé MyFolder puis enregistrez le script sous le fichier MyScript.sql dans le dossier C:\MyFolder. Entrez la commande suivante dans la console pour exécuter le script et placer la sortie dans MyOutput.txtMyFolder:
sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt
Voici le jeu de résultats.
Changed database context to 'AdventureWorks2025'.
BusinessEntityID FirstName LastName
----------------- ---------- ------------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
B. Utiliser sqlcmd avec une connexion d’administration dédiée
L’exemple suivant utilise sqlcmd pour se connecter à un serveur qui a un problème de blocage, à l’aide de la connexion d’administrateur dédié (DAC).
C:\Temp\>sqlcmd -S ServerName -A
1> SELECT session_id, blocking_session_id FROM sys.dm_exec_requests WHERE blocking_session_id <> 0;
2> GO
Voici le jeu de résultats.
session_id blocking_session_id
----------- --------------------`
62 64
(1 rows affected)
Utilisez sqlcmd pour mettre fin au processus de blocage.
1> KILL 64;
2> GO
C. Utiliser sqlcmd pour exécuter une procédure stockée
L'exemple suivant montre comment exécuter une procédure stockée à l'aide de sqlcmd. Créez la procédure stockée suivante.
USE AdventureWorks2025;
GO
IF OBJECT_ID('dbo.ContactEmailAddress', 'P') IS NOT NULL
DROP PROCEDURE dbo.ContactEmailAddress;
GO
CREATE PROCEDURE dbo.ContactEmailAddress (
@FirstName NVARCHAR(50),
@LastName NVARCHAR(50)
)
AS
SET NOCOUNT ON;
SELECT EmailAddress
FROM Person.Person
WHERE FirstName = @FirstName
AND LastName = @LastName;
SET NOCOUNT OFF;
GO
À l’invite sqlcmd , entrez la commande suivante :
C:\Temp\sqlcmd
1> :Setvar FirstName Gustavo
1> :Setvar LastName Achong
1> EXEC dbo.ContactEmailAddress $(FirstName),$(LastName)
2> GO
EmailAddress
-----------------------------
gustavo0@adventure-works.com
D. Utiliser sqlcmd pour la maintenance de base de données
L'exemple suivant montre comment utiliser sqlcmd pour une tâche de maintenance de base de données. Créez C:\Temp\BackupTemplate.sql à l'aide du code suivant.
USE master;
BACKUP DATABASE [$(db)] TO DISK = '$(bakfile)';
Dans l’invite sqlcmd, saisissez le code suivant :
C:\Temp\>sqlcmd
1> :connect <server>
Sqlcmd: Successfully connected to server <server>.
1> :setvar db msdb
1> :setvar bakfile C:\Temp\msdb.bak
1> :r C:\Temp\BackupTemplate.sql
2> GO
Changed database context to 'master'.
Processed 688 pages for database 'msdb', file 'MSDBData' on file 2.
Processed 5 pages for database 'msdb', file 'MSDBLog' on file 2.
BACKUP DATABASE successfully processed 693 pages in 0.725 seconds (7.830 MB/sec)
E. Utiliser sqlcmd pour exécuter du code sur plusieurs instances
Le code suivant dans un fichier illustre la connexion d'un script à deux instances. Notez GO avant la connexion à la deuxième instance.
:CONNECT <server>\,<instance1>
EXEC dbo.SomeProcedure
GO
:CONNECT <server>\,<instance2>
EXEC dbo.SomeProcedure
GO
F. Retourner la sortie XML
L’exemple suivant montre comment la sortie XML retourne un flux continu non mis en forme.
C:\Temp\>sqlcmd -d AdventureWorks2025
1> :XML ON
1> SELECT TOP 3 FirstName + ' ' + LastName + ', '
2> FROM Person.Person
3> GO
Syed Abbas, Catherine Abel, Kim Abercrombie,
G. Utiliser sqlcmd dans un fichier de script Windows
Vous pouvez exécuter une commande sqlcmd , telle que sqlcmd -i C:\Temp\InputFile.txt -o C:\Temp\OutputFile.txt, dans un .bat fichier avec VBScript. N’utilisez pas d’options interactives dans ce scénario.
sqlcmd doit être installé sur l’ordinateur qui exécute le .bat fichier.
Commencez par créer les quatre fichiers suivants dans C:\Temp :
C:\Temp\badscript.sql
SELECT batch_1_this_is_an_error GO SELECT 'batch #2' GOC:\Temp\goodscript.sql
SELECT 'batch #1'; GO SELECT 'batch #2'; GOC:\Temp\returnvalue.sql
:exit(select 100)C:\Temp\windowsscript.bat
@echo off echo Running badscript.sql sqlcmd -i badscript.sql -b -o out.log if not errorlevel 1 goto next1 echo == An error occurred :next1 echo Running goodscript.sql sqlcmd -i goodscript.sql -b -o out.log if not errorlevel 1 goto next2 echo == An error occurred :next2 echo Running returnvalue.sql sqlcmd -i returnvalue.sql -o out.log echo SQLCMD returned %errorlevel% to the command shell :exit
Ensuite, exécutez C:\Temp\windowsscript.bat dans la console :
C:\Temp\>windowsscript.bat
Running badscript.sql
== An error occurred
Running goodscript.sql
Running returnvalue.sql
SQLCMD returned 100 to the command shell
H. Utiliser sqlcmd pour définir le chiffrement sur Azure SQL Database
Vous pouvez exécuter sqlcmd sur une connexion aux données SQL Database pour spécifier le chiffrement et l’approbation de certificat. Deux options sqlcmd sont disponibles :
Le
-Ncommutateur est la demande du client pour une connexion chiffrée. Cette option est équivalente à l'option ADO.NETENCRYPT = true.Le
-Ccommutateur configure le client pour approuver implicitement le certificat de serveur et ne pas le valider. Cette option est équivalente à l'option ADO.NETTRUSTSERVERCERTIFICATE = true.
Le service SQL Database ne prend pas en charge toutes les options SET disponibles sur une instance SQL Server. Les options suivantes provoquent une erreur lorsque l'option SET correspondante est définie sur ON ou OFF:
SET ANSI_DEFAULTSSET ANSI_NULLSSET REMOTE_PROC_TRANSACTIONSSET ANSI_NULL_DEFAULT
Les options suivantes SET sont déconseillées. Ils ne génèrent pas d’exceptions, mais restent inutilisables :
SET CONCAT_NULL_YIELDS_NULLSET ANSI_PADDINGSET QUERY_GOVERNOR_COST_LIMIT
Syntax
Les exemples suivants font référence à des cas où les paramètres du fournisseur SQL Server Native Client incluent :
ForceProtocolEncryption = FalseTrust Server Certificate = No
Connexion à l'aide des informations d'identification Windows et d'une communication chiffrée :
sqlcmd -E -N
Connexion à l'aide des informations d'identification Windows et d'un certificat de serveur de confiance :
sqlcmd -E -C
Connectez-vous à l’aide d’informations d’identification Windows, chiffrez la communication et faites confiance au certificat du serveur.
sqlcmd -E -N -C
Les exemples suivants font référence à des cas où les paramètres du fournisseur SQL Server Native Client incluent :
ForceProtocolEncryption = TrueTrustServerCertificate = Yes
Connectez-vous à l’aide d’informations d’identification Windows, chiffrez la communication et faites confiance au certificat du serveur.
sqlcmd -E
Connectez-vous à l’aide d’informations d’identification Windows, chiffrez la communication et faites confiance au certificat du serveur.
sqlcmd -E -N
Connectez-vous avec vos identifiants Windows, chiffrez la communication et faites confiance au certificat du serveur :
sqlcmd -E -C
Connectez-vous à l'aide des informations d'identification Windows, chiffrez la communication et faites confiance au certificat du serveur.
sqlcmd -E -N -C
Si le fournisseur spécifie ForceProtocolEncryption = True, alors le chiffrement est activé même si Encrypt=No est indiqué dans la chaîne de connexion.