Partager via


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é EncryptSqlConnectionEncryptOption 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