Connexion avec sqlcmd

Télécharger le pilote ODBC

L’utilitaire sqlcmd est disponible dans Microsoft ODBC Driver for SQL Server sur Linux et macOS.

Les commandes suivantes montrent respectivement comment utiliser l’authentification Windows (Kerberos) l’authentification SQL Server :

sqlcmd -E -Sxxx.xxx.xxx.xxx
sqlcmd -Sxxx.xxx.xxx.xxx -Uxxx -Pxxx

Options disponibles

Les options suivantes sont disponibles dans sqlcmd sur Linux et macOS :

-?
Afficher l’utilisation de sqlcmd.

-a
Demander une taille de paquet.

-b
Terminer le programme de traitement par lots en cas d’erreur.

-cbatch_terminator
Spécifier le terminateur de lot.

-C
Faire confiance au certificat de serveur.

-dnom_base_de_données
Émettez une instruction USEdatabase_name quand vous démarrez sqlcmd.

-D
Fait en sorte que la valeur passée à l’option -S de sqlcmd soit interprétée comme un nom de source de données (DSN). Pour plus d’informations, consultez « Prise en charge du nom de source de données dans sqlcmd et bcp » à la fin de cette rubrique.

-e
Écrire des scripts d’entrée sur le périphérique de sortie standard (stdout).

-E
Utiliser la connexion approuvée (authentification intégrée). Pour plus d’informations sur l’établissement de connexions approuvées qui utilisent l’authentification intégrée à partir d’un client Linux ou macOS, consultez Utilisation de l’authentification intégrée.

-fcodepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
Spécifie les pages de codes d'entrée et de sortie. Le numéro de page de codes est une valeur numérique qui spécifie une page de codes Linux installée. (disponible depuis 17.5.1.1)

-G
Ce commutateur est utilisé par le client durant la connexion à la base de données Azure SQL, à Azure SQL Managed Instance ou à Azure Synapse Analytics pour spécifier que l’utilisateur soit authentifié avec Microsoft Entra ID (anciennement Azure Active Directory). Il peut être combiné avec l’option -P seule pour utiliser l’authentification par jeton d’accès (v17.8 et versions ultérieures). Cette option définit la variable de script sqlcmd SQLCMDUSEAAD = true. Le commutateur -G nécessite au moins la version sqlcmd 17.6. Pour déterminer votre version, exécutez sqlcmd -?.

Important

L’option -G s’applique uniquement à la base de données Azure SQL, à Azure SQL Managed Instance et à Azure Synapse Analytics.

L’authentification interactive Microsoft Entra n’est actuellement prise en charge ni sur Linux ni sur macOS. L’authentification intégrée Microsoft Entra requiert la version 17.6.1 ou une version ultérieur du pilote ODBC Microsoft 17 pour SQL Server et un environnement Kerberos correctement configuré.

-hnumber_of_rows
Spécifier le nombre de lignes à imprimer entre les en-têtes de colonnes.

-H
Spécifier un nom de station de travail.

-iinput_file[,input_file[,...]]
Identifier le fichier qui contient un lot d’instructions SQL ou de procédures stockées.

-I
Affecter la valeur ON à l’option de connexion SET QUOTED_IDENTIFIER.

-k
Supprimer ou remplacer des caractères de contrôle.

-Kapplication_intent
Déclare le type de la charge de travail de l'application lors de la connexion à un serveur. La seule valeur actuellement prise en charge est ReadOnly. Si -K n’est pas spécifié, sqlcmd ne prend pas en charge la connectivité à un réplica secondaire dans un groupe de disponibilité Always On. Pour plus d’informations, consultez Prise en charge par le pilote ODBC pour Linux et macOS de la haute disponibilité et de la reprise d’activité.

Notes

L’option -K n’est pas prise en charge dans la version CTP pour SUSE Linux. Vous pouvez toutefois spécifier le mot clé ApplicationIntent=ReadOnly dans un fichier DSN passé à sqlcmd. Pour plus d’informations, consultez « Prise en charge du nom de source de données dans sqlcmd et bcp » à la fin de cette rubrique.

-ldélai d’attente
Spécifiez le nombre de secondes au terme duquel une connexion sqlcmd expire quand vous tentez de vous connecter à un serveur.

-merror_level
Déterminer les messages d’erreur envoyés à stdout.

-Mmultisubnet_failover
Spécifiez toujours -M en cas de connexion à l’écouteur de groupe de disponibilité d’un groupe de disponibilité SQL Server 2012 (11.x) ou d’une instance de cluster de basculement SQL Server 2012 (11.x). -M accélère la détection des basculements et la connexion au serveur (actuellement) actif. Si -M n’est pas spécifié, -M est désactivé. Pour plus d’informations sur les groupes de disponibilité AlwaysOn, consultez Pilote ODBC sur Linux et macOS - Haute disponibilité et récupération d’urgence.

Notes

L’option -M n’est pas prise en charge dans la version CTP pour SUSE Linux. Vous pouvez toutefois spécifier le mot clé MultiSubnetFailover=Yes dans un fichier DSN passé à sqlcmd. Pour plus d’informations, consultez « Prise en charge du nom de source de données dans sqlcmd et bcp » à la fin de cette rubrique.

-N[s|m|o]
Définissez respectivement le mode de chiffrement de la connexion sur Strict, Obligatoire ou Facultatif. Obligatoire par défaut si le paramètre n’est pas spécifié. ([s|m|o] ajouté dans sqlcmd 18.0)

-ooutput_file
Identifier le fichier qui reçoit le sortie de sqlcmd.

-p
Imprimer des statistiques de performances pour chaque jeu de résultats.

-P
Spécifier un mot de passe utilisateur. Lorsqu’il est utilisé avec l’option -G sans -U, spécifie un fichier contenant un jeton d’accès (v17.8 et versions ultérieures). Le fichier de jeton doit être au format UTF-16LE (pas de marque d’ordre d’octet).

Les jetons d’accès peuvent être obtenus par le biais de différentes méthodes. Il est important de s’assurer que le jeton d’accès est de type correct octet par octet, car il est envoyé tel quel. Vous trouverez ci-dessous un exemple de commande qui obtient un jeton d’accès. La commande utilise les commandes Azure CLI et Linux, et les enregistre dans un fichier au format approprié. Si l’encodage par défaut de votre système ou de votre terminal n’est pas ASCII ou UTF-8, vous devrez peut-être ajuster les options iconv. Veillez à sécuriser soigneusement le fichier obtenu et à le supprimer quand il n’est plus nécessaire.

az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile

-qcommandline_query
Exécute une requête au démarrage de sqlcmd, mais ne quitte pas une fois la requête exécutée.

-Qcommandline_query
Exécuter une requête au démarrage de sqlcmd. sqlcmd s’arrête quand la requête est terminée.

-r
Redirige les messages d’erreur vers stderr.

-R
Fait en sorte que le pilote utilise les paramètres régionaux du client pour convertir les données de devise et de date et d’heure en données caractères. Uniquement actuellement uniquement la mise en forme en_US (anglais américain).

-scolumn_separator_char
Spécifier le caractère de séparation des colonnes.

-S [protocol:] server[,port]
Spécifier l’instance de SQL Server à laquelle il faudra se connecter ou, si -D est utilisé, un nom de source de données. Le pilote ODBC sur Linux et macOS impose d’utiliser -S. La seule valeur de protocole valide est tcp.

-tquery_timeout
Spécifier le nombre de secondes accordées pour l’exécution d’une commande (ou une instruction SQL).

-u
Spécifier que le fichier output_file est stocké au format Unicode, quel que soit le format du fichier input_file.

-U
login_id Spécifie un ID de connexion d’utilisateur.

-Verror_severity_level
Contrôler le niveau de gravité utilisé pour définir la variable ERRORLEVEL.

-wcolumn_width
Spécifier la largeur d’écran pour la sortie.

-W
Supprimer les espaces à droite d’une colonne.

-x
Désactiver la substitution de variable.

-X
Désactiver les commandes, le script de démarrage et les variables d’environnement.

-yvariable_length_type_display_width
Définissez la variable de script sqlcmdSQLCMDMAXFIXEDTYPEWIDTH.

-Yfixed_length_type_display_width
Définissez la variable de script sqlcmdSQLCMDMAXVARTYPEWIDTH.

-zmot de passe
Modifier le mot de passe.

-Zmot de passe
Modifier le mot de passe et quitter.

Commandes disponibles

Dans la version actuelle, les commandes suivantes sont disponibles :

  • [:]!!

  • :Connect

  • :Error

  • [:]EXIT

  • GO [count]

  • :Help

  • :List

  • :Listvar

  • :On Error

  • :Out

  • :Perftrace

  • [:]QUIT

  • :r

  • :RESET

  • :setvar

Options non disponibles

Dans la version actuelle, les options suivantes ne sont pas disponibles :

-A
Se connecter à SQL Server avec une connexion administrateur dédiée (DAC). Pour plus d’informations sur la façon d’établir une connexion administrateur dédiée, consultez Recommandations en matière de programmation.

-L
Répertorier les serveurs configurés localement et le nom des serveurs diffusant sur le réseau.

-v
Créer une variable de script sqlcmd pouvant être utilisée dans un script sqlcmd.

Vous pouvez utiliser la méthode alternative suivante : Placez les paramètres dans un même fichier, que vous pouvez ensuite ajouter à un autre fichier. Cette méthode vous aide à utiliser un fichier de paramètres pour remplacer les valeurs. Par exemple, créer un fichier nommé a.sql (le fichier de paramètres) avec le contenu suivant :

:setvar ColumnName object_id
:setvar TableName sys.objects

Ensuite, créer un fichier nommé b.sql avec les paramètres de remplacement :

SELECT $(ColumnName) FROM $(TableName)

En ligne de commande, combinez a.sql et b.sql en c.sql avec les commandes suivantes :

cat a.sql > c.sql

cat b.sql >> c.sql

Exécutez sqlcmd et utilisez c.sql comme fichier d’entrée :

sqlcmd -S<...> -P<..> -U<..> -I c.sql

Commandes non disponibles

Dans la version actuelle, les commandes suivantes ne sont pas disponibles :

  • :ED

  • :ServerList

  • :XML

Prise en charge du nom de source de données dans sqlcmd et bcp

Vous pouvez indiquer un nom de source de données (DSN) plutôt qu’un nom de serveur dans l’option sqlcmd ou bcp-S (ou la commande sqlcmd :Connect) si vous spécifiez -D. -D provoque sqlcmd ou bcp pour se connecter au serveur spécifié dans le DSN dans l’option -S.

Les noms de sources de données système sont stockés dans le fichier odbc.ini du répertoire ODBC SysConfigDir (/etc/odbc.ini sur les installations standard). Les noms de sources de données utilisateur sont stockés dans .odbc.ini dans le répertoire de base de l’utilisateur (~/.odbc.ini).

Sur les systèmes Windows, les noms de source de données Utilisateur et Système sont stockés dans le Registre et gérés par le biais d’odbcad32.exe. Les fichiers de noms de source de données ne sont pas pris en charge par bcp ni sqlcmd.

Consultez Attributs et mots clés de chaîne de connexion et DSN pour la liste des entrées prises en charge par le pilote.

Dans un nom de source de données, seule l’entrée DRIVER est nécessaire, mais pour établir une connexion à un serveur distant, sqlcmd ou bcp a besoin d’une valeur dans l’élément SERVER. Si l’élément SERVER est vide ou absent dans le nom de source de données, sqlcmd et bcp tenteront de se connecter à l’instance par défaut sur le système local.

Lors de l’utilisation de bcp sur les systèmes Windows, SQL Server 2017 (14.x) et versions antérieures exigent le pilote SQL Native Client 11 (sqlncli11.dll), tandis que SQL Server 2019 (15.x) et versions ultérieures exigent le pilote Microsoft ODBC Driver 17 for SQL Server (msodbcsql17.dll).

Si vous spécifiez la même option dans le nom de source de données et sur la ligne de commande sqlcmd ou bcp, l’option de ligne de commande remplace la valeur utilisée dans le nom de source de données. Par exemple, si le nom de source de données comporte une entrée DATABASE et que la ligne de commande sqlcmd inclut -d, la valeur passée à -d est utilisée. Si vous spécifiez Trusted_Connection=yes dans le nom de source de données, l’authentification Kerberos est utilisée et le nom d’utilisateur ( -U) et le mot de passe ( -P), s’ils sont fournis, sont ignorés.

Vous pouvez modifier les scripts qui appellent isql pour qu’ils utilisent sqlcmd en définissant l’alias suivant : alias isql="sqlcmd -D".

Voir aussi

Connexion avec bcp
Notes de publication