Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Invoke-Sqlcmd est une applet de commande SQL Server qui exécute des scripts qui contiennent des instructions des langages (Transact-SQL et XQuery) et des commandes prises en charge par l’utilitaire sqlcmd .
Utilisation de Invoke-Sqlcmd
L’applet de commande Invoke-Sqlcmd vous permet d’exécuter vos fichiers de script sqlcmd dans un environnement Windows PowerShell. Une grande partie de ce que vous pouvez faire avec sqlcmd peut également être effectuée à l’aide d’Invoke-Sqlcmd.
Voici un exemple d’appel de Invoke-Sqlcmd pour exécuter une requête simple, similaire à la spécification de sqlcmd avec les options -Q et -S :
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"
Voici un exemple d’appel d’Invoke-Sqlcmd, en spécifiant un fichier d’entrée et en pipant la sortie vers un fichier Ceci est similaire à la spécification de sqlcmd avec les options -i et -o :
Invoke-Sqlcmd -InputFile "C:\MyFolder\TestSQLCmd.sql" | Out-File -FilePath "C:\MyFolder\TestSQLCmd.rpt"
Il s’agit d’un exemple d’utilisation d’un tableau Windows PowerShell pour passer plusieurs variables de script sqlcmd à Invoke-Sqlcmd. Les caractères « $ » identifiant les variables de script sqlcmd dans l’instruction SELECT ont été échappés à l’aide du caractère d’échappement PowerShell back-tick « ` » :
$MyArray = "MyVar1 = 'String1'", "MyVar2 = 'String2'"
Invoke-Sqlcmd -Query "SELECT `$(MyVar1) AS Var1, `$(MyVar2) AS Var2;" -Variable $MyArray
Il s’agit d’un exemple d’utilisation du fournisseur SQL Server pour Windows PowerShell pour accéder à une instance du moteur de base de données, puis de l’applet de commande Windows PowerShell Get-Item pour récupérer l’objet SMO Server pour l’instance et de le transmettre à Invoke-Sqlcmd :
Set-Location SQLSERVER:\SQL\MyComputer\MyInstance
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance (Get-Item .)
Le paramètre -Query est positionnel et n’a pas à être nommé. Si la première chaîne passée à Invoke-Sqlcmd : n’est pas nommée, elle est traitée comme le paramètre -Query.
Invoke-Sqlcmd "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"
Contexte de chemin d’accès dans Invoke-Sqlcmd
Si vous n’utilisez pas le paramètre -Database, le contexte de base de données de Invoke-Sqlcmd est défini par le chemin d’accès actif lorsque l’applet de commande est appelée.
| Chemin | Contexte de base de données |
|---|---|
| Commence par un lecteur de disque autre que SQLSERVER : | Base de données par défaut pour l’ID de connexion dans l’instance par défaut sur l’ordinateur local. |
| SQLSERVER :\SQL | Base de données par défaut pour l’ID de connexion dans l’instance par défaut sur l’ordinateur local. |
| SQLSERVER :\SQL\ComputerName | Base de données par défaut pour l’ID de connexion dans l’instance par défaut sur l’ordinateur spécifié. |
| SQLSERVER :\SQL\ComputerName\InstanceName | Base de données par défaut pour l’ID de connexion dans l’instance spécifiée sur l’ordinateur spécifié. |
| SQLSERVER :\SQL\ComputerName\InstanceName\Databases | Base de données par défaut pour l’ID de connexion dans l’instance spécifiée sur l’ordinateur spécifié. |
| SQLSERVER :\SQL\ComputerName\InstanceName\Databases\DatabaseName | Base de données spécifiée dans l’instance spécifiée sur l’ordinateur spécifié. Cela s’applique également aux chemins plus longs, tels qu’un chemin d’accès qui spécifie le nœud Tables et Colonnes dans une base de données. |
Par exemple, supposons que la base de données par défaut de votre compte Windows dans l’instance par défaut de l’ordinateur local soit maître. Ensuite, les commandes suivantes retournent master :
Set-Location SQLSERVER:\SQL
Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
Les commandes suivantes retournent AdventureWorks2012 :
Set-Location SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2012\Tables\Person.Person
Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
Invoke-Sqlcmd fournit un avertissement lorsqu’il utilise le contexte de base de données de chemin. Vous pouvez utiliser le paramètre -SuppressProviderContextWarning pour désactiver le message d’avertissement. Vous pouvez utiliser le paramètre -IgnoreProviderContext pour indiquer à Invoke-Sqlcmd d’utiliser toujours la base de données par défaut pour la connexion.
Comparaison de Invoke-Sqlcmd et de l’utilitaire sqlcmd
Invoke-Sqlcmd peut être utilisé pour exécuter un grand nombre de scripts qui peuvent être exécutés à l’aide de l’utilitaire sqlcmd . Toutefois, Invoke-Sqlcmd s’exécute dans un environnement Windows PowerShell différent de l’environnement d’invite de commandes dans lequel sqlcmd est exécuté. Le comportement d’Invoke-Sqlcmd a été modifié pour fonctionner dans un environnement Windows PowerShell.
Toutes les commandes sqlcmd ne sont pas implémentées dans Invoke-Sqlcmd. Les commandes qui ne sont pas implémentées sont les suivantes : :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :perftrace, et :serverlist.
Invoke-Sqlcmd n’initialise pas l’environnement sqlcmd ou les variables de script telles que SQLCMDDBNAME ou SQLCMDWORKSTATION.
Invoke-Sqlcmd n’affiche pas de messages, tels que la sortie des instructions PRINT, sauf si vous spécifiez le paramètre commun Windows PowerShell -Verbose . Par exemple:
Invoke-Sqlcmd -Query "PRINT N'abc';" -Verbose
Tous les paramètres sqlcmd ne sont pas nécessaires dans un environnement PowerShell. Par exemple, Windows PowerShell met en forme toutes les sorties des applets de commande. Par conséquent, les paramètres sqlcmd spécifiant les options de mise en forme ne sont pas implémentés dans Invoke-Sqlcmd. Le tableau suivant montre la relation entre les paramètres Invoke-Sqlcmd et les options sqlcmd :
| Descriptif | option sqlcmd | paramètre Invoke-Sqlcmd |
|---|---|---|
| Nom du serveur et de l’instance. | -S | -ServerInstance |
| Base de données initiale à utiliser. | -d | -Base de données |
| Exécutez la requête et la sortie spécifiées. | -Q | -Requête |
| ID de connexion de l’authentification SQL Server. | -U | -Nom d’utilisateur |
| Mot de passe de l’authentification SQL Server. | -P | -Mot de passe |
| Définition de variable. | -v | -Variable |
| Intervalle de temps d'expiration de la requête. | -T | -QueryTimeout |
| Arrêter l'exécution en cas d'erreur | -b | -AbortOnError |
| Connexion dédiée d'administrateur. | -Un | -DedicatedAdministratorConnection |
| Désactivez les commandes interactives, le script de démarrage et les variables d’environnement. | -X | -DésactiverCommandes |
| Désactiver la substitution de variable. | -x | -DésactiverVariables |
| Niveau de gravité minimal à signaler. | -V | -SeverityLevel |
| Niveau d’erreur minimal à signaler. | -m | -NiveauErreur |
| Intervalle de délai d’expiration de connexion. | -l | -DélaiD'attenteDeConnexion |
| Nom d’hôte. | -H | -Nom d'Hôte |
| Modifier le mot de passe et quitter. | -Z | -NouveauMotDePasse |
| Fichier d’entrée contenant une requête | -i | -FichierEntrée |
| Longueur maximale de la sortie de caractères. | -w | -MaxCharLength |
| Longueur maximale de la sortie binaire. | -w | -MaxBinaryLength |
| Connectez-vous à l’aide du chiffrement SSL. | Aucun paramètre | -EncryptConnection |
| Afficher les erreurs | Aucun paramètre | -OutputSqlErrors |
| Messages de sortie vers stderr. | -r | Aucun paramètre |
| Utiliser les paramètres régionaux du client | -R | Aucun paramètre |
| Exécutez la requête spécifiée et maintenez l'exécution. | -q | Aucun paramètre |
| Page de codes à utiliser pour les données de sortie. | -f | Aucun paramètre |
| Modifier un mot de passe et continuer de fonctionner | -Z | Aucun paramètre |
| Taille du paquet | -un | Aucun paramètre |
| Séparateur de colonnes | -S | Aucun paramètre |
| Contrôler les en-têtes de sortie | -H | Aucun paramètre |
| Spécifier des caractères de contrôle | -k | Aucun paramètre |
| Largeur d’affichage de longueur fixe | -Y | Aucun paramètre |
| Largeur d'affichage variable | -y | Aucun paramètre |
| Entrée d’écho | -e | Aucun paramètre |
| Activer les identificateurs entre guillemets | -Je | Aucun paramètre |
| Supprimer des espaces de fin | -w | Aucun paramètre |
| Lister les instances | -L | Aucun paramètre |
| Mettre en forme la sortie en tant qu’Unicode | -u | Aucun paramètre |
| Imprimer les statistiques | -p | Aucun paramètre |
| Fin de commande | -c | Aucun paramètre |
| Connexion avec l’authentification Windows | -E | Aucun paramètre |
Voir aussi
Utiliser les applets de commande du moteur de base de données
utilitaire sqlcmd
Utiliser l'utilitaire sqlcmd