Invoke-Sqlcmd
Exécute un script contenant des instructions prises en charge par l’utilitaire SQL Server SQLCMD.
Syntaxe
Invoke-Sqlcmd
[-ServerInstance <PSObject>]
[-Database <String>]
[-Encrypt <String>]
[-EncryptConnection]
[-Username <String>]
[-AccessToken <String>]
[-Password <String>]
[-Credential <PSCredential>]
[[-Query] <String>]
[-QueryTimeout <Int32>]
[-ConnectionTimeout <Int32>]
[-ErrorLevel <Int32>]
[-SeverityLevel <Int32>]
[-MaxCharLength <Int32>]
[-MaxBinaryLength <Int32>]
[-AbortOnError]
[-DedicatedAdministratorConnection]
[-DisableVariables]
[-DisableCommands]
[-HostName <String>]
[-ApplicationName <String>]
[-ApplicationIntent <ApplicationIntent>]
[-MultiSubnetFailover]
[-FailoverPartner <String>]
[-HostNameInCertificate <String>]
[-TrustServerCertificate]
[-NewPassword <String>]
[-Variable <PSObject>]
[-InputFile <String>]
[-OutputSqlErrors <Boolean>]
[-IncludeSqlUserErrors]
[-SuppressProviderContextWarning]
[-IgnoreProviderContext]
[-OutputAs <OutputType>]
[-StatisticsVariable <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Invoke-Sqlcmd
[-AccessToken <String>]
[[-Query] <String>]
[-QueryTimeout <Int32>]
[-ErrorLevel <Int32>]
[-SeverityLevel <Int32>]
[-MaxCharLength <Int32>]
[-MaxBinaryLength <Int32>]
[-AbortOnError]
[-DisableVariables]
[-DisableCommands]
[-Variable <PSObject>]
[-InputFile <String>]
[-OutputSqlErrors <Boolean>]
[-IncludeSqlUserErrors]
[-OutputAs <OutputType>]
-ConnectionString <String>
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-StatisticsVariable <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Description
L’applet de commande Invoke-Sqlcmd exécute un script contenant les langues et les commandes prises en charge par l’utilitaire SQL Server SQLCMD.
Les commandes prises en charge sont Transact-SQL instructions et le sous-ensemble de la syntaxe XQuery prise en charge par le moteur de base de données.
Cette applet de commande accepte également de nombreuses commandes prises en charge en mode natif par SQLCMD, telles que GO et QUIT.
Cette applet de commande accepte également les variables de script SQLCMD, telles que SQLCMDUSER. Par défaut, cette applet de commande ne définit pas les variables de script SQLCMD.
Cette applet de commande ne prend pas en charge l’utilisation de commandes principalement liées à la modification de script interactive.
Les commandes non prises en charge incluent :!, :connect, :error, :out, :ed, :list, :listvar, :reset, :p erftrace et :serverlist.
Lorsque cette applet de commande est exécutée, le premier jeu de résultats retourné par le script s’affiche sous la forme d’une table mise en forme.
Si les jeux de résultats suivants contiennent des listes de colonnes différentes de la première, ces jeux de résultats ne sont pas affichés.
Si les jeux de résultats suivants après le premier jeu ont la même liste de colonnes, leurs lignes sont ajoutées à la table mise en forme qui contient les lignes retournées par le premier jeu de résultats.
Vous pouvez afficher la sortie du message SQL Server, par exemple celles résultant de l’instruction SQL PRINT, en spécifiant le paramètre Verbose.
Exemples
Exemple 1 : Se connecter à une instance nommée et exécuter un script
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery" -ServerInstance "MyComputer\MainInstance"
TimeOfQuery
-----------
9/21/2017 2:48:24 PM
Cette commande se connecte à une instance nommée du moteur de base de données SQL sur un ordinateur et exécute un script de base de Transact-SQL.
Exemple 2 : Appeler des commandes dans un fichier de script et enregistrer la sortie dans un fichier texte
Invoke-Sqlcmd -InputFile "C:\ScriptFolder\TestSqlCmd.sql" | Out-File -FilePath "C:\ScriptFolder\TestSqlCmd.rpt"
Output sent to TestSqlCmd.rpt.
Cette commande lit un fichier contenant des instructions Transact-SQL et des commandes SQLCMD, exécute le fichier et écrit la sortie dans un autre fichier.
Le fichier de sortie peut contenir des informations propriétaires. Vous devez donc sécuriser les fichiers de sortie avec les autorisations NTFS appropriées.
Exemple 3 : Appeler un script et passer des valeurs de variable à partir d’une chaîne
$StringArray = "MYVAR1='String1'", "MYVAR2='String2'"
Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2" -Variable $StringArray
Var1 Var2
---- ----
String1 String2
Cette commande utilise un tableau de chaînes de caractères comme entrée dans le paramètre Variable.
Le tableau définit plusieurs variables SQLCMD.
L’instruction $ se connecte à l’instruction SELECT qui identifie les variables SQLCMD sont échappées à l’aide du caractère back-tick (').
Exemple 4 : Appeler un script et transmettre des variables à partir du moteur de base de données SQL
Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
PS SQLSERVER:\SQL\MyComputer\MainInstance> Invoke-Sqlcmd -Query "SELECT SERVERPROPERTY('MachineName') AS ComputerName" -ServerInstance (Get-Item .)
ComputerName
------------
MyComputer
Cette commande utilise Set-Location pour accéder au chemin du fournisseur PowerShell SQL ServerWindows pour une instance du moteur de base de données SQL.
Il appelle ensuite Get-Item pour récupérer un objet SQL Management Object Server à utiliser comme paramètre ServerInstance d’Invoke-Sqlcmd.
Exemple 5 : Exécuter une requête et afficher une sortie détaillée
Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
Invoke-SqlCmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc
Cette commande utilise le paramètre Windows PowerShellVerbose pour retourner la sortie du message de la commande SQL PRINT.
Exemple 6 : Appeler une commande à l’aide d’une chaîne positionnelle comme entrée
Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance\Databases\MyDatabase"
PS SQLSERVER:\SQL\MyComputer\MainInstance> Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName"
WARNING: Using provider context. Server = MyComputer\MainInstance, Database = MyDatabase.
DatabaseName
------------
MyDatabase
Cette commande utilise une chaîne positionnelle pour fournir l’entrée au paramètre De requête.
Il montre également comment Invoke-Sqlcmd utilise le chemin d’accès actuel pour définir le contexte de base de données sur MyDatabase.
Exemple 7 : Capturer des données dans un objet DataSet
$DS = Invoke-Sqlcmd -ServerInstance "MyComputer" -Query "SELECT ID, Item FROM MyDB.dbo.MyTable" -As DataSet
$DS.Tables[0].Rows | %{ echo "{ $($_['ID']), $($_['Item']) }" }
{ 10, AAA }
{ 20, BBB }
{ 30, CCC }
Cette commande utilise le paramètre As DataSet pour capturer les données dans un objet .Net System.Data.DataSet et stocke le résultat dans la variable « $DS ». L’objet peut être utilisé pour un traitement ultérieur.
Exemple 8 : Obtenir des jeux de colonnes spécifiques
$Tables = Invoke-Sqlcmd -ServerInstance "MyComputer" -Query "SELECT Item, id FROM MyDatabase.dbo.MyTable; SELECT GETDATE() AS T" -As DataTables
$Tables[0].Rows | %{ echo $_.ID }
$Tables[1].Rows | %{ echo $_.T.DayOfWeek }
10
20
30
Monday
La première commande utilise le paramètre As DataTables pour capturer les données dans une collection d’objets .Net System.Data.DataTable. La commande obtient deux tables avec des jeux de colonnes différents.
Chaque table peut être traitée individuellement, en fonction de son propre schéma.
Exemple 9 : Obtenir un contrôle total d’une connexion
Invoke-Sqlcmd -Query "SELECT COUNT(*) AS Count FROM MyTable" -ConnectionString "Data Source=MYSERVER;Initial Catalog=MyDatabase;Integrated Security=True;ApplicationIntent=ReadOnly"
Count
-----
127432
Cette commande permet aux utilisateurs du paramètre -ConnectionString d’obtenir un contrôle total de la connexion établie par cette applet de commande, au lieu de la Invoke-Sqlcmd pour générer la chaîne de connexion en fonction des paramètres passés sur la ligne de commande.
Cela est utile pour les propriétés moins courantes que vous souhaiterez peut-être utiliser.
Exemple 10 : Exécuter une procédure stockée et capturer les erreurs SQL
$script_sp_with_errors = @'
CREATE PROCEDURE [dbo].[TestProcedure3]
AS
BEGIN
CREATE TABLE [dbo].[TestTable] (col INT NOT NULL);
INSERT INTO [dbo].[TestTable] VALUES (NULL); -- will cause an error
END
GO
'@
# Create a test database
Invoke-SqlCmd -ServerInstance MyServer -Query 'CREATE DATABASE TestDB'
# ... adds a stored procedure that has errors in it...
Invoke-SqlCmd -ServerInstance MyServer -Database 'TestDB' -Query $script_sp_with_errors
# ... executes the SP and collected the errors
Invoke-SqlCmd -ServerInstance MyServer -Database 'TestDB' -Query 'EXEC TestProcedure3' -OutputSqlErrors $true
Here's the output:
Invoke-SqlCmd : Cannot insert the value NULL into column 'col', table 'TestDB.dbo.TestTable'; column does not allow nulls. INSERT fails.
The statement has been terminated.
Msg 515, Level 16, State 2, Procedure TestProcedure3, Line 5.
At line:1 char:1
...
Cette commande permet aux utilisateurs du paramètre -OutputSqlErrors de signaler les erreurs à l’utilisateur. Notez que le message d’erreur dans ce cas fournit des informations supplémentaires telles que le nom du fournisseur de services et le numéro de ligne où l’erreur s’est produite.
Exemple 11 : Se connecter à Azure SQL Database (ou Managed Instance) à l’aide d’un jeton d’accès
Import-Module SQLServer
Import-Module Az.Accounts -MinimumVersion 2.2.0
# Note: the sample assumes that you or your DBA configured the server to accept connections using
# that Service Principal and has granted it access to the database (in this example at least
# the SELECT permission).
### Obtain the Access Token: this will bring up the login dialog
Connect-AzAccount
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token`
-query 'select * from Table1'
Exemple 12 : Se connecter à Azure SQL Database (ou Managed Instance) à l’aide d’un principal de service
Import-Module SQLServer
# Note: the sample assumes that you or your DBA configured the server to accept connections using
# that Service Principal and has granted it access to the database (in this example at least
# the SELECT permission).
$clientid = "enter application id that corresponds to the Service Principal" # Do not confuse with its display name
$tenantid = "enter the tenant ID of the Service Principal"
$secret = "enter the secret associated with the Service Principal"
$request = Invoke-RestMethod -Method POST `
-Uri "https://login.microsoftonline.com/$tenantid/oauth2/token"`
-Body @{ resource="https://database.windows.net/"; grant_type="client_credentials"; client_id=$clientid; client_secret=$secret }`
-ContentType "application/x-www-form-urlencoded"
$access_token = $request.access_token
# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token`
-query 'select * from Table1'
Exemple 13 : Se connecter à Azure SQL Database (ou Managed Instance) à l’aide d’une identité managée affectée par le système (SAMI)
Import-Module SQLServer
# Note: the sample assumes that you or your DBA configured the server to accept connections using
# that VM Identity you are running on and has granted it access to the database (in this
# example at least the SELECT permission).
Connect-AzAccount -Identity
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token `
-query 'select * from Table1'
Exemple 14 : Se connecter à Azure SQL Database (ou Managed Instance) à l’aide d’une identité managée affectée par l’utilisateur (UAMI)
Import-Module SQLServer
# Note: the sample assumes that you or your DBA configured the server to accept connections using
# that VM Identity you are running on and has granted it access to the database (in this
# example at least the SELECT permission).
Connect-AzAccount -Identity -AccountId '<your-user-assigned-managed-identity-client-id>'
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-Sqlcmd -ServerInstance myserver.database.windows.net -Database mydb -AccessToken $access_token `
-query 'select * from Table1'
Exemple 15 : Se connecter à un groupe de disponibilité configuré pour le routage Read-Only à l’aide de -ApplicationIntent
# In the following example:
# - MT_2009250511 is a listener for an AG configured for Read-Only Routing (port 5555)
# - AGDB_2_1 is the DB in the AG
# - VLM00226138 is the primary replica configured to only allow ReadWrite connections
# - VLM00226137 is the secondary replica
#
Invoke-Sqlcmd -ServerInstance "MT_2009250511,5555" -Database AGDB_2_1 `
-HostName "PowershellBox1" -ApplicationName "ReadWrite" -ApplicationIntent ReadWrite `
-Query "select HOST_NAME() AS HostName, APP_NAME() AS ApplicationIntent, @@SERVERNAME AS ServerName"
Invoke-Sqlcmd -ServerInstance "MT_2009250511,5555" -Database AGDB_2_1 `
-HostName "PowershellBox2" -ApplicationName "ReadOnly" -ApplicationIntent ReadOnly `
-Query "select HOST_NAME() AS HostName, APP_NAME() AS ApplicationIntent, @@SERVERNAME AS ServerName"
# When you run the 2 cmdlets above, the output is going to be something like this:
#
# HostName ApplicationIntent ServerName
# -------- ----------------- ----------
# PowershellBox1 ReadWrite VLM00226138
#
# HostName ApplicationIntent ServerName
# -------- ----------------- ----------
# PowershellBox2 ReadOnly VLM00226137
qui indique que, selon la valeur du paramètre -ApplicationIntent
, la connexion est acheminée vers un autre serveur du groupe de disponibilité. En outre, observez les utilisations des paramètres -ApplicationName
et -HostName
pour différencier visuellement les deux résultats : il s’agit d’une technique courante qui peut être utilisée pour tracer les connexions et leurs intentions, au-delà de l’exemple -ApplicationIntent illustré ici.
Exemple 16 : Capturer les statistiques de connexion via -StatisticsVariable paramètre
Import-Module SQLServer
Invoke-Sqlcmd -ServerInstance localhost -StatisticsVariable stats `
-Query 'CREATE TABLE #Table (ID int); INSERT INTO #Table VALUES(1), (2); INSERT INTO #Table VALUES(3); SELECT * FROM #Table'
Write-Host "Number of rows affected......: $($stats.IduRows)"
Write-Host "Number of insert statements..: $($stats.IduCount)"
Write-Host "Number of select statements..: $($stats.SelectCount)"
Write-Host "Total execution time.........: $($stats.ExecutionTime)ms"
# When you run the code fragment above, is going to be something like this:
#
# Number of rows affected......: 3
# Number of insert statements..: 2
# Number of select statements..: 1
# Total execution time.........: 5ms
Cet exemple montre comment utiliser le paramètre -StatisticsVariable
pour capturer des informations sur la connexion, les instructions exécutées et l’heure d’exécution lors de l’exécution d’une table T-SQL qui crée une table temporaire, insérer une valeur et émet enfin une sélection pour obtenir toutes les lignes insérées.
Remarque : lorsque la même requête est exécutée sur plusieurs serveurs (par exemple, en pipant les noms de serveurs via l’applet de commande), le StatisticsVariable
capture un tableau de statistiques, un pour chaque connexion. Les résultats peuvent ensuite être agrégés à l’aide, par exemple, ($stats.IduRows | Measure-Object -Sum).Sum
.
Pour plus d’informations sur les statistiques disponibles, consultez Statistics for SQL Server.
Exemple 17 : Exécutez une requête qui déchiffre les données récupérées à partir de colonnes chiffrées à l’aide d’Always Encrypted. Supposons que la clé principale de colonne est stockée dans un coffre de clés dans Azure Key Vault.
# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount
# Obtain an access token for key vaults.
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token
# Pass the token to the cmdlet, so that it can use it to authenticate to Azure when decrypting data protected with Always Encrypted.
$connString = 'Data Source=MYSERVER;Initial Catalog=MyDatabase;Integrated Security=True;ApplicationIntent=ReadOnly;Column Encryption Setting=Enabled'
Invoke-Sqlcmd -Query 'SELECT COUNT(*) AS Count FROM MyTable' -ConnectionString $connString -KeyVaultAccessToken $keyVaultAccessToken
Paramètres
-AbortOnError
Indique que cette applet de commande arrête la commande SQL Server et retourne un niveau d’erreur à la variable WINDOWS PowerShell ERRORLEVEL si cette applet de commande rencontre une erreur.
Le niveau d’erreur retourné est 1 si l’erreur a une gravité supérieure à 10 et que le niveau d’erreur est 0 si l’erreur a une gravité de 10 ou moins.
Si le paramètre ErrorLevel est également spécifié, cette applet de commande retourne 1 uniquement si la gravité du message d’erreur est égale ou supérieure à la valeur spécifiée pour ErrorLevel.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-AccessToken
Jeton d’accès utilisé pour s’authentifier auprès de SQL Server, comme alternative à l’authentification utilisateur/mot de passe ou Windows.
Cela peut être utilisé, par exemple, pour vous connecter à SQL Azure DB
et SQL Azure Managed Instance
à l’aide d’un Service Principal
ou d’un Managed Identity
(voir les références en bas de cette page)
Dans les scénarios courants, ce paramètre est obtenu avec quelque chose comme (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
(nécessite le module Az.Account)
Ne spécifiez pas nom d’utilisateur, mot de passe ou d’informations d’identification lors de l’utilisation de ce paramètre.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ApplicationIntent
Type de charge de travail d’application lors de la connexion à une base de données dans un groupe de disponibilité SQL Server.
Les valeurs autorisées sont les suivantes : ReadOnly et ReadWrite.
Type: | ApplicationIntent |
Valeurs acceptées: | ReadWrite, ReadOnly |
Position: | Named |
Valeur par défaut: | ReadWrite |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ApplicationName
Nom de l’application associée à la connexion.
Type: | String |
Position: | Named |
Valeur par défaut: | .NET SqlClient Data Provider |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ConnectionString
Spécifie une chaîne de connexion à connecter au serveur.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ConnectionTimeout
Spécifie le nombre de secondes pendant lesquelles cette applet de commande expire si elle ne peut pas se connecter à une instance du moteur de base de données. La valeur de délai d’expiration doit être une valeur entière comprise entre 0 et 65534. Si 0 est spécifié, les tentatives de connexion n’expirent pas.
Type: | Int32 |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Credential
Objet PSCredential dont les champs Nom d’utilisateur et Mot de passe seront utilisés pour se connecter à l’instance SQL.
Type: | PSCredential |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Database
Spécifie le nom d’une base de données. Cette applet de commande se connecte à cette base de données dans l’instance spécifiée dans le paramètre ServerInstance.
Si le paramètre de base de données n’est pas spécifié, la base de données utilisée dépend si le chemin actuel spécifie à la fois le dossier SQLSERVER :\SQL et un nom de base de données. Si le chemin d’accès spécifie à la fois le dossier SQL et un nom de base de données, cette applet de commande se connecte à la base de données spécifiée dans le chemin d’accès. Si le chemin d’accès n’est pas basé sur le dossier SQL ou si le chemin d’accès ne contient pas de nom de base de données, cette applet de commande se connecte à la base de données par défaut pour l’ID de connexion actuel. Si vous spécifiez le commutateur de paramètre IgnoreProviderContext, cette applet de commande ne considère aucune base de données spécifiée dans le chemin actuel et se connecte à la base de données définie comme valeur par défaut pour l’ID de connexion actuel.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-DedicatedAdministratorConnection
Indique que cette applet de commande utilise une connexion d’administrateur dédié (DAC) pour se connecter à une instance du moteur de base de données.
DAC est utilisé par les administrateurs système pour des actions telles que la résolution des problèmes d’instances qui n’acceptent pas de nouvelles connexions standard.
L’instance doit être configurée pour prendre en charge DAC.
Si la DAC n’est pas activée, cette applet de commande signale une erreur et ne s’exécute pas.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-DisableCommands
Indique que cette applet de commande désactive certaines fonctionnalités sqlcmd susceptibles de compromettre la sécurité lors de l’exécution dans des fichiers batch.
Elle empêche les variables Windows PowerShell d’être transmises au script Invoke-Sqlcmd.
Le script de démarrage spécifié dans la variable de script SQLCMDINI n’est pas exécuté.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-DisableVariables
Indique que cette applet de commande ignore les variables de script sqlcmd. Cela est utile lorsqu’un script contient de nombreuses instructions INSERT qui peuvent contenir des chaînes qui ont le même format que des variables, telles que $(variable_name).
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Encrypt
Type de chiffrement à utiliser lors de la connexion à SQL Server.
Cette valeur est mappée à la propriété Encrypt
SqlConnectionEncryptOption
sur l’objet SqlConnection du pilote Microsoft.Data.SqlClient.
Lorsqu’elle n’est pas spécifiée, la valeur par défaut est Mandatory
.
Ce paramètre est nouveau dans v22 du module. Pour plus d’informations, consultez
Strict Connection Encryption
sous liens connexes.
Type: | String |
Valeurs acceptées: | Mandatory, Optional, Strict |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-EncryptConnection
Indique que cette applet de commande utilise le chiffrement SSL/TLS (Secure Sockets Layer) pour la connexion à l’instance du moteur de base de données spécifié dans le paramètre ServerInstance.
À compter de la version 22 du module, ce paramètre est déconseillé. Les connexions sont chiffrées par défaut. Envisagez plutôt d’utiliser le nouveau paramètre -Encrypt. Pour plus d’informations, consultez
Strict Connection Encryption
sous liens connexes.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ErrorLevel
Spécifie que cette applet de commande affiche uniquement les messages d’erreur dont le niveau de gravité est égal ou supérieur à la valeur spécifiée. Tous les messages d’erreur s’affichent si ce paramètre n’est pas spécifié ou défini sur 0. Les gravités des erreurs du moteur de base de données vont de 1 à 24.
Type: | Int32 |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-FailoverPartner
Nom ou adresse du serveur partenaire auquel se connecter si le serveur principal est arrêté.
Type: | String |
Position: | Named |
Valeur par défaut: | "" |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-HostName
Spécifie un nom de station de travail. Le nom de la station de travail est signalé par la procédure stockée système sp_who et dans la colonne nom d’hôte de la vue catalogue sys.process. Si ce paramètre n’est pas spécifié, la valeur par défaut est le nom de l’ordinateur sur lequel Invoke-Sqlcmd est exécutée. Ce paramètre peut être utilisé pour identifier différentes sessions Invoke-Sqlcmd.
Type: | String |
Alias: | WorkstationID |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-HostNameInCertificate
Nom d’hôte à utiliser pour valider le certificat TLS/SSL SQL Server. Vous devez passer ce paramètre si votre instance SQL Server est activée pour Forcer le chiffrement et que vous souhaitez vous connecter à une instance à l’aide du nom d’hôte/shortname. Si ce paramètre est omis, le passage du nom de domaine complet (FQDN) à -ServerInstance est nécessaire pour se connecter à une instance SQL Server activée pour Forcer le chiffrement.
Ce paramètre est nouveau dans v22 du module. Pour plus d’informations, consultez
Strict Connection Encryption
sous liens connexes.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-IgnoreProviderContext
Indique que cette applet de commande ignore le contexte de base de données qui a été établi par le chemin SQLSERVER :\SQL actuel. Si le paramètre de base de données n’est pas spécifié, cette applet de commande utilise la base de données par défaut pour l’ID de connexion actuel ou le compte Windows.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-IncludeSqlUserErrors
Indique que cette applet de commande retourne des erreurs de script utilisateur SQL qui sont sinon ignorées par défaut. Si ce paramètre est spécifié, cette applet de commande correspond au comportement par défaut de l’utilitaire sqlcmd.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-InputFile
Spécifie un fichier à utiliser comme entrée de requête dans cette applet de commande. Le fichier peut contenir des instructions Transact-SQL, des instructions XQuery et des commandes sqlcmd et des variables de script. Spécifiez le chemin complet du fichier. Le fichier est censé être encodé à l’aide de UTF-8.
Vous devez exécuter uniquement des scripts à partir de sources approuvées. Vérifiez que tous les scripts d’entrée sont sécurisés avec les autorisations NTFS appropriées.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-KeyVaultAccessToken
Spécifie un jeton d’accès pour les coffres de clés dans Azure Key Vault. Utilisez ce paramètre si une colonne à interroger est protégée avec Always Encrypted à l’aide d’une clé principale de colonne stockée dans un coffre de clés dans Azure Key Vault. Vous pouvez également vous authentifier auprès d’Azure avec Add-SqlAzureAuthenticationContext avant d’appeler cette applet de commande.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ManagedHsmAccessToken
Spécifie un jeton d’accès pour les HSM managés dans Azure Key Vault. Utilisez ce paramètre si une colonne à interroger est protégée avec Always Encrypted à l’aide d’une clé principale de colonne stockée dans un HSM managé dans Azure Key Vault. Vous pouvez également vous authentifier auprès d’Azure avec Add-SqlAzureAuthenticationContext avant d’appeler cette applet de commande.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-MaxBinaryLength
Spécifie le nombre maximal d’octets retournés pour les colonnes avec des types de données de chaîne binaire, tels que binaire et varbinary. La valeur par défaut est de 1 024 octets.
Type: | Int32 |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-MaxCharLength
Spécifie le nombre maximal de caractères retournés pour les colonnes avec des types de données Caractère ou Unicode, tels que char, nchar, varchar et nvarchar. La valeur par défaut est de 4 000 caractères.
Type: | Int32 |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-MultiSubnetFailover
Si votre application se connecte à un groupe de disponibilité AlwaysOn sur différents sous-réseaux, le passage de ce paramètre permet une détection et une connexion plus rapides au serveur actif (actuellement).
Remarque : la transmission de -MultiSubnetFailover n’est pas nécessaire avec .NET Framework 4.6.1 ou versions ultérieures.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-NewPassword
Spécifie un nouveau mot de passe pour un ID de connexion d’authentification SQL Server. Cette applet de commande modifie le mot de passe, puis se ferme. Vous devez également spécifier les paramètres nom d’utilisateur et mot de passe, avec mot de passe qui spécifie le mot de passe actuel pour la connexion.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-OutputAs
Spécifie le type des résultats obtenus par cette applet de commande.
Si vous ne spécifiez pas de valeur pour ce paramètre, l’applet de commande définit la valeur sur DataRows.
Type: | OutputType |
Alias: | As |
Valeurs acceptées: | DataSet, DataTables, DataRows |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-OutputSqlErrors
Indique que cette applet de commande affiche les messages d’erreur dans la sortie Invoke-Sqlcmd.
Type: | Boolean |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Password
Spécifie le mot de passe de l’ID de connexion d’authentification SQL Server spécifié dans le paramètre Username. Les mots de passe respectent la casse. Si possible, utilisez l’authentification Windows. N’utilisez pas de mot de passe vide, lorsque cela est possible, utilisez un mot de passe fort.
Si vous spécifiez le paramètre Mot de passe suivi de votre mot de passe, le mot de passe est visible par toute personne qui peut voir votre moniteur.
Si vous codez le mot de passe suivi de votre mot de passe dans un script .ps1, toute personne qui lit le fichier de script voit votre mot de passe.
Attribuez les autorisations NTFS appropriées au fichier pour empêcher d’autres utilisateurs de pouvoir lire le fichier.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ProgressAction
Détermine comment PowerShell répond aux mises à jour de progression générées par un script, une applet de commande ou un fournisseur, telles que les barres de progression générées par l’applet de commande Write-Progress. L’applet de commande Write-Progress crée des barres de progression qui affichent l’état d’une commande.
Type: | ActionPreference |
Alias: | proga |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Query
Spécifie une ou plusieurs requêtes exécutées par cette applet de commande. Les requêtes peuvent être des instructions Transact-SQL ou XQuery, ou des commandes sqlcmd. Plusieurs requêtes séparées par un point-virgule peuvent être spécifiées. Ne spécifiez pas le séparateur GO sqlcmd. Placez les guillemets doubles inclus dans la chaîne. Envisagez d’utiliser des identificateurs entre crochets tels que [MyTable] au lieu d’identificateurs entre guillemets tels que « MyTable ».
Type: | String |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-QueryTimeout
Spécifie le nombre de secondes avant l’expiration des requêtes. Si aucune valeur de délai d’expiration n’est spécifiée, les requêtes n’expirent pas. Le délai d’expiration doit être une valeur entière comprise entre 1 et 65535.
Type: | Int32 |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ServerInstance
Spécifie une chaîne de caractères ou un objet SMO (SQL Server Management Objects) qui spécifie le nom d’une instance du moteur de base de données. Pour les instances par défaut, spécifiez uniquement le nom de l’ordinateur : MyComputer. Pour les instances nommées, utilisez le format ComputerName\InstanceName.
Type: | PSObject |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-SeverityLevel
Spécifie la limite inférieure pour le niveau de gravité du message d’erreur que cette applet de commande retourne à la variable Windows PowerShell ERRORLEVEL.
Cette applet de commande retourne le niveau de gravité le plus élevé des messages d’erreur générés par les requêtes qu’il exécute, à condition que la gravité soit égale ou supérieure à celle spécifiée dans le paramètre SeverityLevel.
Si SeverityLevel n’est pas spécifié ou défini sur 0, cette applet de commande retourne 0 à ERRORLEVEL.
Les niveaux de gravité des messages d’erreur du moteur de base de données varient de 1 à 24.
Cette applet de commande ne signale pas les gravités des messages d’information dont la gravité est de 10
Type: | Int32 |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-StatisticsVariable
Spécifiez le nom d’une variable PowerShell qui sera affectée aux statistiques d’exécution SQL Server lorsque l’applet de commande est exécutée.
L’utilisation courante de ce paramètre consiste à capturer le ExecutionTime
(durée cumulée (en millisecondes) que le fournisseur a passé à traiter l’applet de commande) ou IduRows
(nombre total de lignes affectées par les instructions INSERT, DELETE et UPDATE).
Pour plus d’informations, consultez Statistiques du fournisseur pour SQL Server.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-SuppressProviderContextWarning
Indique que cette applet de commande supprime l’avertissement que cette applet de commande a utilisé dans le contexte de base de données à partir du paramètre de chemin SQLSERVER :\SQL actuel pour établir le contexte de base de données de l’applet de commande.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-TrustServerCertificate
Indique si le canal sera chiffré lors du contournement de la marche à pied de la chaîne de certificats pour valider l’approbation.
Ce paramètre est nouveau dans v22 du module. Pour plus d’informations, consultez
Strict Connection Encryption
sous liens connexes.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Username
Spécifie l’ID de connexion pour établir une connexion d’authentification SQL Server à une instance du moteur de base de données.
Le mot de passe doit être spécifié via le paramètre Password.
Si le nom d’utilisateur et le mot de passe ne sont pas spécifiés, cette applet de commande tente une connexion d’authentification Windows à l’aide du compte Windows exécutant la session Windows PowerShell. Si possible, utilisez l’authentification Windows.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Variable
Spécifie un ensemble de variables de script sqlcmd à utiliser dans le script sqlcmd et définit des valeurs pour les variables.
Utilisez un tableau Windows PowerShell pour spécifier plusieurs variables et leurs valeurs ; utilisez également une Hashtable
où la clé représente le nom de la variable et la valeur de la variable.
Lors de l’utilisation d’un tableau, les valeurs de paramètre sont réduites. Ce comportement a été conservé dans v22 du module pour la compatibilité descendante avec v21. Il est recommandé de ne pas s’appuyer sur ce comportement, qui peut changer dans une prochaine version majeure du module.
Le paramètre de type
Hashtable
est disponible uniquement dans v22+ du module.
Type: | PSObject |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
Entrées
System.Management.Automation.PSObject
Sorties
System.Object