Invoke-Sqlcmd

Exécute un script contenant des instructions prises en charge par l’utilitaire SQLCMD SQL Server.

Syntax

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>]
      [<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>]
      [<CommonParameters>]

Description

L’applet de commande Invoke-Sqlcmd exécute un script contenant les langages et les commandes pris en charge par l’utilitaire SQLCMD SQL Server.

Les commandes prises en charge sont des instructions Transact-SQL 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 de 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, :perftrace 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 celles du premier, 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 SQL Server sortie de message, comme celles qui résultent de l’instruction SQL PRINT, en spécifiant le paramètre Verbose.

Exemples

Exemple 1 : Se connecter à un instance nommé 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 à un instance nommé du moteur SQL Database sur un ordinateur et exécute un script Transact-SQL de base.

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 transmettre 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.

Les connexions $ dans l’instruction SELECT qui identifient les variables SQLCMD sont placées dans une séquence d’échappement à 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 un instance du moteur SQL Database.

Ensuite, il appelle Get-Item pour récupérer un objet SQL Management Object Server pour l’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 renvoyer 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 Query.

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 : Prendre le 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 d’utiliser le paramètre -ConnectionString pour obtenir le contrôle total de la connexion établie par cette applet de commande, au lieu de la Invoke-Sqlcmd de générer le 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 utilise le paramètre -OutputSqlErrors pour 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 base de données (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 base de données (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 base de données (ou Managed Instance) à l’aide d’une identité managée

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).

## Obtain access token from the machine
if (Get-Command -All az -ErrorAction SilentlyContinue -CommandType Application) {
  # Obtain the Access Token from the Azure provider for database resources (using az az cli)
  az login
  $access_token = az account get-access-token --resource https://database.windows.net/ --query accessToken -o tsv
} else {
  # az cli not around: fall back and assume this is a VM in Azure
  $response = Invoke-WebRequest `
    -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net'`
    -Method GET`
    -Headers @{Metadata="true"}
  $access_token = ($response.Content | ConvertFrom-Json).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'

Cet exemple est similaire à celui ci-dessus. Il vous montre uniquement la flexibilité du paramètre AccessToken .

Exemple 14 : 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

ce qui montre que, en fonction de la valeur du -ApplicationIntent paramètre, la connexion est acheminée vers un autre serveur dans le groupe de disponibilité. Au passage, observez les utilisations des -ApplicationName paramètres et -HostName pour différencier visuellement les deux résultats : il s’agit d’une technique courante qui peut être utilisée pour suivre les connexions et leurs intentions, au-delà de l’exemple -ApplicationIntent illustré ici.

Exemple 15 : Capturer des statistiques de connexion via le paramètre -StatisticsVariable

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 -StatisticsVariable paramètre pour capturer des informations sur la connexion, les instructions exécutées et le temps d’exécution lors de l’exécution d’un T-SQL qui crée une table temporaire, insérer une valeur et enfin émet 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 par le biais de l’applet de commande), le StatisticsVariable capture un tableau de statistiques, une pour chaque connexion. Les résultats peuvent ensuite être agrégés à l’aide, par exemple, de ($stats.IduRows | Measure-Object -Sum).Sum.

Pour plus d’informations sur les statistiques disponibles, consultez Statistiques du fournisseur pour SQL Server.

Exemple 16 : Exécuter une requête qui déchiffre les données récupérées à partir de colonnes chiffrées à l’aide de Always Encrypted. Supposons que la colonne master clé 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 ERRORLEVEL Windows PowerShell si cette applet de commande rencontre une erreur.

Le niveau d'erreur retourné est 1 si l’erreur à un niveau de gravité supérieur à 10 ; sinon, le niveau d’erreur est 0 si l’erreur a un niveau de gravité inférieur ou égal à 10.

Si le paramètre ErrorLevel est également spécifié, cette applet de commande retourne 1 uniquement si la gravité du message d’erreur est également égale ou supérieure à la valeur spécifiée pour ErrorLevel.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AccessToken

Le jeton d’accès utilisé pour s’authentifier auprès de SQL Server, en guise d’alternative à l’authentification utilisateur/mot de passe ou à l’authentification Windows.

Cela peut être utilisé, par exemple, pour se connecter à et à SQL Azure DB l’aide d’un Service Principal ou d’un Managed Identity (voir les références en bas de cette SQL Azure Managed Instance 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 UserName, Password ou Credential lors de l’utilisation de ce paramètre.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 : ReadOnly et ReadWrite.

Type:ApplicationIntent
Accepted values:ReadWrite, ReadOnly
Position:Named
Default value:ReadWrite
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

Nom de l’application associée à la connexion.

Type:String
Position:Named
Default value:.NET SqlClient Data Provider
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionString

Spécifie une chaîne de connexion pour se connecter au serveur.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionTimeout

Spécifie le nombre de secondes pendant lesquelles cette applet de commande expire si elle ne peut pas se connecter correctement à un instance du moteur de base de données. La valeur du délai d’expiration doit être une valeur entière comprise entre 0 et 65534. Si la valeur 0 est spécifiée, les tentatives de connexion n'expirent pas.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Objet PSCredential dont les champs Nom d’utilisateur et Mot de passe seront utilisés pour se connecter au instance SQL.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Database

Spécifie le nom d’une base de données. Cette applet de commande se connecte à cette base de données dans le instance spécifié dans le paramètre ServerInstance.

Si le paramètre Database n’est pas spécifié, la base de données utilisée dépend si le chemin d’accès 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 s’il 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 prend en compte aucune base de données spécifiée dans le chemin d’accès 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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DedicatedAdministratorConnection

Indique que cette applet de commande utilise une connexion d’administrateur dédié (DAC) pour se connecter à un instance du moteur de base de données.

La DAC permet aux administrateurs système d'effectuer des opérations telles que le dépannage d'instances qui n'acceptent pas de nouvelles connexions standard.

L'instance doit être configurée pour prendre en charge la 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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableCommands

Indique que cette applet de commande désactive certaines fonctionnalités sqlcmd qui peuvent compromettre la sécurité lors de l’exécution dans des fichiers batch.

Il empêche Windows PowerShell variables 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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableVariables

Indique que cette applet de commande ignore les variables de script sqlcmd. Cela s'avère utile lorsqu'un script contient de nombreuses instructions INSERT pouvant contenir des chaînes dotées du même format que des variables régulières, tel que $(nom de variable).

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encrypt

Type de chiffrement à utiliser lors de la connexion à SQL Server.

Cette valeur est mappée à la Encrypt propriété 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
Accepted values:Mandatory, Optional, Strict
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EncryptConnection

Indique que cette applet de commande utilise le chiffrement SSL/TLS (Secure Sockets Layer) pour la connexion au 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é. Connections sont chiffrés 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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ErrorLevel

Spécifie que cette applet de commande affiche uniquement les messages d’erreur dont le niveau de gravité est supérieur ou égal à 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 niveaux de gravité des erreurs du moteur de base de données sont compris entre 1 et 24.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FailoverPartner

Nom ou adresse du serveur partenaire auquel se connecter si le serveur principal est en panne.

Type:String
Position:Named
Default value:""
Required:False
Accept pipeline input:False
Accept wildcard characters: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 hostname de l'affichage catalogue sys.processes. 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é. Ce paramètre peut être utilisé pour identifier différentes sessions Invoke-Sqlcmd.

Type:String
Aliases:WorkstationID
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HostNameInCertificate

Nom d’hôte à utiliser pour valider le certificat SQL Server TLS/SSL. Vous devez passer ce paramètre si votre SQL Server instance est activé pour Forcer le chiffrement et que vous souhaitez vous connecter à un instance à l’aide d’un nom d’hôte/nom court. Si ce paramètre est omis, le passage du nom de domaine complet (FQDN) à -ServerInstance est nécessaire pour se connecter à un SQL Server instance activé 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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 Database n’est pas spécifié, cette applet de commande utilise la base de données par défaut pour l’ID de connexion ou le compte Windows actuel.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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, des commandes sqlcmd et des variables de script. Spécifiez le chemin d'accès complet au fichier. Les espaces ne sont autorisés ni dans le chemin d'accès ni dans le nom du fichier. Le fichier doit être encodé à l’aide d’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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 colonne master clé 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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 colonne master clé 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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxBinaryLength

Spécifie le nombre maximal d'octets retourné pour les colonnes avec des types de données de chaînes binaires, tels que binary et varbinary. La valeur par défaut est 1 024 octets.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxCharLength

Spécifie le nombre maximal de caractères retourné pour les colonnes avec des types de données de caractères ou Unicode, tels que char, nchar, varchar et nvarchar. La valeur par défaut est de 4 000 caractères.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 (actuellement) actif.

Remarque : le passage de -MultiSubnetFailover n’est pas obligatoire avec .NET Framework 4.6.1 ou versions ultérieures.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NewPassword

Spécifie un nouveau mot de passe pour un ID de connexion pour l'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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 DataRows.

Type:OutputType
Aliases:As
Accepted values:DataSet, DataTables, DataRows
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputSqlErrors

Indique que cette applet de commande affiche des messages d’erreur dans la sortie Invoke-Sqlcmd.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Password

Spécifie le mot de passe de l’ID de connexion d’authentification SQL Server qui a été spécifié dans le paramètre Username. Les mots de passe respectent la casse. Lorsque c'est possible, utilisez l'authentification Windows. N'utilisez pas un mot de passe vide ; si possible, utilisez un mot de passe fort.

Si vous spécifiez le paramètre Password suivi de votre mot de passe, le mot de passe est visible par quiconque peut voir votre moniteur.

Si vous codez Mot de passe suivi de votre mot de passe dans un script .ps1, toute personne lisant le fichier de script verra votre mot de passe.

Assignez les autorisations NTFS appropriées au fichier pour empêcher d’autres utilisateurs de pouvoir lire le fichier.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Query

Spécifie une ou plusieurs requêtes que cette applet de commande exécute. Les requêtes peuvent être des instructions Transact-SQL ou XQuery, ou des commandes sqlcmd. Vous pouvez spécifier plusieurs requêtes séparées par un point-virgule. Ne spécifiez pas le séparateur sqlcmd GO. Interprète les guillemets doubles inclus dans la chaîne comme caractères d'échappement. Pensez à utiliser des identificateurs entre crochets, tels que [MyTable], à la place d’identificateurs entre guillemets, tels que « MyTable ».

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ServerInstance

Spécifie une chaîne de caractères ou SQL Server objet SMO (Management Objects) qui spécifie le nom d’un 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
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters: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 ERRORLEVEL Windows PowerShell.

Cette applet de commande retourne le niveau de gravité le plus élevé à partir des messages d’erreur générés par les requêtes qu’elle 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 sont compris entre 1 et 24.

Cette applet de commande ne signale pas les gravités pour les messages d’information dont la gravité est de 10

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StatisticsVariable

Spécifiez le nom d’une variable PowerShell qui sera affectée aux statistiques d’exécution SQL Server lors de l’exécution de l’applet de commande.

L’utilisation courante de ce paramètre consiste à capturer le ExecutionTime (la durée cumulée (en millisecondes) que le fournisseur a passé à traiter l’applet de commande) ou IduRows (le 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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 d’accès SQLSERVER :\SQL actuel pour établir le contexte de base de données pour l’applet de commande.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TrustServerCertificate

Indique si le canal sera chiffré tout en contournant 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
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 nom d’utilisateur et 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. Lorsque c'est possible, utilisez l'authentification Windows.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 ; vous pouvez également utiliser un 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ètres sont réduites. Ce comportement a été conservé dans v22 du module à des fins de compatibilité descendante avec v21. Il est recommandé de ne pas se fier à ce comportement, qui peut changer dans une prochaine version majeure du module.

Le paramètre de type Hashtable n’est disponible que dans v22+ du module.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entrées

System.Management.Automation.PSObject

Sorties

System.Object