Invoke-Sqlcmd
Führt ein Skript mit Anweisungen aus, die vom SQL Server SQLCMD-Hilfsprogramm unterstützt werden.
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>]
[-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>]
Beschreibung
Das cmdlet Invoke-Sqlcmd führt ein Skript aus, das die Sprachen und Befehle enthält, die vom SQL Server SQLCMD-Hilfsprogramm unterstützt werden.
Die unterstützten Befehle sind Transact-SQL Anweisungen und die Teilmenge der XQuery-Syntax, die vom Datenbankmodul unterstützt wird.
Dieses Cmdlet akzeptiert auch viele der Befehle, die von SQLCMD nativ unterstützt werden, z. B. GO und QUIT.
Dieses Cmdlet akzeptiert auch die SQLCMD-Skriptingvariablen, z. B. SQLCMDUSER. Standardmäßig legt dieses Cmdlet keine SQLCMD-Skriptingvariablen fest.
Dieses Cmdlet unterstützt nicht die Verwendung von Befehlen, die in erster Linie mit der interaktiven Skriptbearbeitung zusammenhängen.
Die Befehle werden nicht unterstützt: :!, :connect, :error, :out, :ed, :list, :listvar, :reset, :p erftrace und :serverlist.
Wenn dieses Cmdlet ausgeführt wird, wird das erste Ergebnisset, das das Skript zurückgibt, als formatierte Tabelle angezeigt.
Wenn nachfolgende Resultsets unterschiedliche Spaltenlisten enthalten als die erste, werden diese Resultsets nicht angezeigt.
Wenn nachfolgende Resultsets nach dem ersten Satz dieselbe Spaltenliste aufweisen, werden die Zeilen an die formatierte Tabelle angefügt, die die Zeilen enthält, die vom ersten Resultset zurückgegeben wurden.
Sie können die Ausgabe von SQL Server-Nachrichten anzeigen, z. B. solche, die aus der SQL PRINT-Anweisung resultieren, indem Sie den Verbose-Parameter angeben.
Beispiele
Beispiel 1: Herstellen einer Verbindung mit einer benannten Instanz und Ausführen eines Skripts
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery" -ServerInstance "MyComputer\MainInstance"
TimeOfQuery
-----------
9/21/2017 2:48:24 PM
Dieser Befehl stellt eine Verbindung mit einer benannten Instanz des SQL-Datenbankmoduls auf einem Computer und führt ein einfaches Transact-SQL Skript aus.
Beispiel 2: Aufrufen von Befehlen in einer Skriptdatei und Speichern der Ausgabe in einer Textdatei
Invoke-Sqlcmd -InputFile "C:\ScriptFolder\TestSqlCmd.sql" | Out-File -FilePath "C:\ScriptFolder\TestSqlCmd.rpt"
Output sent to TestSqlCmd.rpt.
Dieser Befehl liest eine Datei mit Transact-SQL Anweisungen und SQLCMD-Befehlen, führt die Datei aus und schreibt die Ausgabe in eine andere Datei.
Die Ausgabedatei kann proprietäre Informationen enthalten, daher sollten Sie die Ausgabedateien mit den entsprechenden NTFS-Berechtigungen sichern.
Beispiel 3: Aufrufen eines Skripts und Übergeben von Variablenwerten aus einer Zeichenfolge
$StringArray = "MYVAR1='String1'", "MYVAR2='String2'"
Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2" -Variable $StringArray
Var1 Var2
---- ----
String1 String2
Dieser Befehl verwendet ein Array von Zeichenfolgen als Eingabe für den Parameter Variable.
Das Array definiert mehrere SQLCMD-Variablen.
Die $-Zeichen in der SELECT-Anweisung, die die SQLCMD-Variablen identifizieren, werden mithilfe des Zeichens "Back-Tick (')" escapet.
Beispiel 4: Aufrufen eines Skripts und Übergeben von Variablen aus dem SQL-Datenbankmodul
Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
PS SQLSERVER:\SQL\MyComputer\MainInstance> Invoke-Sqlcmd -Query "SELECT SERVERPROPERTY('MachineName') AS ComputerName" -ServerInstance (Get-Item .)
ComputerName
------------
MyComputer
Dieser Befehl verwendet Set-Location, um zum SQL ServerWindows PowerShell-Anbieterpfad für eine Instanz des SQL-Datenbankmoduls zu navigieren.
Anschließend wird Get-Item aufgerufen, um ein SQL Management Object Server-Objekt für die Verwendung als ServerInstance-Parameter von Invoke-Sqlcmd abzurufen.
Beispiel 5: Ausführen einer Abfrage und anzeigen ausführlicher Ausgabe
Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
Invoke-SqlCmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc
Dieser Befehl verwendet den Windows PowerShellVerbose-Parameter, um die Nachrichtenausgabe des SQL PRINT-Befehls zurückzugeben.
Beispiel 6: Aufrufen eines Befehls mithilfe einer positionsbezogenen Zeichenfolge als Eingabe
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
Dieser Befehl verwendet eine positionale Zeichenfolge, um die Eingabe für den Abfrageparameter zu liefern.
Außerdem wird veranschaulicht, wie Invoke-Sqlcmd den aktuellen Pfad verwendet, um den Datenbankkontext auf MyDatabase festzulegen.
Beispiel 7: Erfassen von Daten in einem DataSet-Objekt
$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 }
Dieser Befehl verwendet den Parameter "As DataSet", um die Daten in einem .Net System.Data.DataSet-Objekt zu erfassen und das Ergebnis in der Variablen "$DS" zu speichern. Das Objekt kann zur weiteren Verarbeitung verwendet werden.
Beispiel 8: Abrufen bestimmter Spaltensätze
$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
Der erste Befehl verwendet den Parameter "As DataTables", um die Daten in einer Auflistung von .Net System.Data.DataTable-Objekten zu erfassen. Der Befehl ruft zwei Tabellen mit unterschiedlichen Spaltensätzen ab.
Jede Tabelle kann einzeln basierend auf einem eigenen Schema verarbeitet werden.
Beispiel 9: Vollzugriff auf eine Verbindung
Invoke-Sqlcmd -Query "SELECT COUNT(*) AS Count FROM MyTable" -ConnectionString "Data Source=MYSERVER;Initial Catalog=MyDatabase;Integrated Security=True;ApplicationIntent=ReadOnly"
Count
-----
127432
Mit diesem Befehl wird der Parameter -ConnectionString, um die von diesem Cmdlet hergestellte Verbindung vollständig zu steuern, anstatt die Invoke-Sqlcmd, um die Verbindungszeichenfolge basierend auf den parametern zu erstellen, die in der Befehlszeile übergeben werden.
Dies ist nützlich für weniger häufige Eigenschaften, die Sie möglicherweise verwenden möchten.
Beispiel 10: Ausführen einer gespeicherten Prozedur und Erfassen der SQL-Fehler
$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
...
Mit diesem Befehl wird der Parameter -OutputSqlErrors, um die Fehler an den Benutzer zu melden. Beachten Sie, dass die Fehlermeldung in diesem Fall zusätzliche Informationen wie den SP-Namen und die Zeilennummer bereitstellt, in der der Fehler aufgetreten ist.
Beispiel 11: Herstellen einer Verbindung mit einer Azure SQL-Datenbank (oder verwalteten Instanz) mithilfe eines Zugriffstokens
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'
Beispiel 12: Herstellen einer Verbindung mit der Azure SQL-Datenbank (oder verwalteten Instanz) mithilfe eines Dienstprinzipals
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'
Beispiel 13: Herstellen einer Verbindung mit der Azure SQL-Datenbank (oder verwalteten Instanz) mithilfe einer vom System zugewiesenen verwalteten Identität (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'
Beispiel 14: Herstellen einer Verbindung mit der Azure SQL-Datenbank (oder verwalteten Instanz) mithilfe einer vom Benutzer zugewiesenen verwalteten Identität (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'
Beispiel 15: Herstellen einer Für Read-Only Routing konfigurierten Verfügbarkeitsgruppe mithilfe von -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
dies zeigt, dass die Verbindung abhängig vom Wert des -ApplicationIntent
Parameters an einen anderen Server in der AG weitergeleitet wird. Beobachten Sie übrigens die Verwendung der parameter -ApplicationName
und -HostName
, um die beiden Ergebnisse visuell zu unterscheiden: Dies ist eine gängige Technik, die verwendet werden kann, um Verbindungen und ihre Absichten nachzuverfolgen, über das hier dargestellte -ApplicationIntent Beispiel hinaus.
Beispiel 16: Erfassen von Verbindungsstatistiken über -StatisticsVariable Parameter
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
In diesem Beispiel wird gezeigt, wie Sie den parameter -StatisticsVariable
verwenden, um Informationen über die Verbindung, die ausgeführten Anweisungen und die Ausführungszeit beim Ausführen einiger T-SQL-Daten zu erfassen, die eine temporäre Tabelle erstellt, einen Wert einfügen und schließlich eine Auswahl ausgibt, um alle eingefügten Zeilen abzurufen.
Hinweis: Wenn dieselbe Abfrage für mehrere Server ausgeführt wird (z. B. durch Das Weiterleiten der Servernamen durch das Cmdlet), erfasst die StatisticsVariable
ein Array von Statistiken, eine für jede Verbindung. Ergebnisse können dann mithilfe von ($stats.IduRows | Measure-Object -Sum).Sum
aggregiert werden.
Weitere Informationen zu den verfügbaren Statistiken finden Sie unter Anbieterstatistiken für SQL Server-.
Beispiel 17: Ausführen einer Abfrage, die Daten entschlüsselt, die aus Spalten verschlüsselt werden, die mit Always Encrypted verschlüsselt wurden. Gehen Sie davon aus, dass der Spaltenmasterschlüssel in einem Schlüsseltresor im Azure Key Vault gespeichert ist.
# 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
Parameter
-AbortOnError
Gibt an, dass dieses Cmdlet den SQL Server-Befehl beendet und eine Fehlerstufe an die Windows PowerShell ERRORLEVEL-Variable zurückgibt, wenn bei diesem Cmdlet ein Fehler auftritt.
Die zurückgegebene Fehlerstufe ist 1, wenn der Fehler einen Schweregrad größer als 10 hat, und die Fehlerstufe 0 ist, wenn der Fehler einen Schweregrad von 10 oder weniger aufweist.
Wenn der Parameter ErrorLevel ebenfalls angegeben ist, gibt dieses Cmdlet nur dann 1 zurück, wenn der Schweregrad der Fehlermeldung ebenfalls gleich oder höher ist als der für ErrorLevel angegebene Wert.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-AccessToken
Das Zugriffstoken, das zur Authentifizierung bei SQL Server verwendet wird, als Alternative zur Benutzer-/Kennwort- oder Windows-Authentifizierung.
Dies kann z. B. zum Herstellen einer Verbindung mit SQL Azure DB
und SQL Azure Managed Instance
mithilfe eines Service Principal
oder einer Managed Identity
verwendet werden (siehe Verweise unten auf dieser Seite)
In gängigen Szenarien wird dieser Parameter mit etwa (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
abgerufen (erfordert das Az.Account-Modul)
Geben Sie UserName, Passwordoder Anmelde informationen nicht an, wenn Sie diesen Parameter verwenden.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ApplicationIntent
Der Anwendungsworkloadtyp beim Herstellen einer Verbindung mit einer Datenbank in einer SQL Server-Verfügbarkeitsgruppe.
Zulässige Werte sind: ReadOnly und ReadWrite.
Typ: | ApplicationIntent |
Zulässige Werte: | ReadWrite, ReadOnly |
Position: | Named |
Standardwert: | ReadWrite |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ApplicationName
Der Name der Anwendung, die der Verbindung zugeordnet ist.
Typ: | String |
Position: | Named |
Standardwert: | .NET SqlClient Data Provider |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ConnectionString
Gibt eine Verbindungszeichenfolge an, die mit dem Server verbunden werden soll.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ConnectionTimeout
Gibt die Anzahl der Sekunden an, wenn dieses Cmdlet nicht erfolgreich eine Verbindung mit einer Instanz des Datenbankmoduls herstellen kann. Der Timeoutwert muss ein ganzzahliger Wert zwischen 0 und 65534 sein. Wenn 0 angegeben ist, werden Verbindungsversuche nicht unterbrochen.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Credential
Das PSCredential-Objekt, dessen Felder "Benutzername" und "Kennwort" zum Herstellen einer Verbindung mit der SQL-Instanz verwendet werden.
Typ: | PSCredential |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Database
Gibt den Namen einer Datenbank an. Mit diesem Cmdlet wird eine Verbindung mit dieser Datenbank in der Instanz hergestellt, die im Parameter "ServerInstance" angegeben ist.
Wenn der Parameter "Database" nicht angegeben ist, hängt die verwendete Datenbank davon ab, ob der aktuelle Pfad sowohl den SQLSERVER:\SQL-Ordner als auch einen Datenbanknamen angibt. Wenn der Pfad sowohl den SQL-Ordner als auch einen Datenbanknamen angibt, stellt dieses Cmdlet eine Verbindung mit der Datenbank herstellt, die im Pfad angegeben ist. Wenn der Pfad nicht auf dem SQL-Ordner basiert oder der Pfad keinen Datenbanknamen enthält, stellt dieses Cmdlet eine Verbindung mit der Standarddatenbank für die aktuelle Anmelde-ID herstellt. Wenn Sie die Parameteroption IgnoreProviderContext angeben, berücksichtigt dieses Cmdlet keine datenbank, die im aktuellen Pfad angegeben ist, und stellt eine Verbindung mit der Datenbank her, die als Standard für die aktuelle Anmelde-ID definiert ist.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-DedicatedAdministratorConnection
Gibt an, dass dieses Cmdlet eine dedizierte Administratorverbindung (DAC) verwendet, um eine Verbindung mit einer Instanz des Datenbankmoduls herzustellen.
DAC wird von Systemadministratoren für Aktionen wie die Problembehandlung von Instanzen verwendet, die keine neuen Standardverbindungen akzeptieren.
Die Instanz muss für die Unterstützung von DAC konfiguriert werden.
Wenn DAC nicht aktiviert ist, meldet dieses Cmdlet einen Fehler und wird nicht ausgeführt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-DisableCommands
Gibt an, dass dieses Cmdlet einige sqlcmd-Features deaktiviert, die die Sicherheit beim Ausführen in Batchdateien beeinträchtigen können.
Sie verhindert, dass Windows PowerShell-Variablen an das skript Invoke-Sqlcmd übergeben werden.
Das in der SQLCMDINI-Skriptvariable angegebene Startskript wird nicht ausgeführt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-DisableVariables
Gibt an, dass dieses Cmdlet sqlcmd-Skriptingvariablen ignoriert. Dies ist nützlich, wenn ein Skript viele INSERT-Anweisungen enthält, die Zeichenfolgen enthalten können, die dasselbe Format wie Variablen aufweisen, z. B. $(variable_name).
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Encrypt
Der Verschlüsselungstyp, der beim Herstellen einer Verbindung mit SQL Server verwendet werden soll.
Dieser Wert ist der Encrypt
Eigenschaft SqlConnectionEncryptOption
für das SqlConnection-Objekt des Microsoft.Data.SqlClient-Treibers zugeordnet.
Wenn nicht angegeben, wird der Standardwert Mandatory
.
Dieser Parameter ist neu in v22 des Moduls. Weitere Informationen finden Sie unter Verwandte Links
Strict Connection Encryption
.
Typ: | String |
Zulässige Werte: | Mandatory, Optional, Strict |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-EncryptConnection
Gibt an, dass dieses Cmdlet ssl/TLS-Verschlüsselung (Secure Sockets Layer) für die Verbindung mit der Instanz des im Parameter "ServerInstance" angegebenen Datenbankmoduls verwendet.
Ab v22 des Moduls ist dieser Parameter veraltet. Verbindungen sind standardmäßig verschlüsselt. Verwenden Sie stattdessen den neuen -Encrypt-Parameter. Weitere Informationen finden Sie unter Verwandte Links
Strict Connection Encryption
.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ErrorLevel
Gibt an, dass dieses Cmdlet nur Fehlermeldungen anzeigt, deren Schweregrad gleich oder höher als der angegebene Wert ist. Alle Fehlermeldungen werden angezeigt, wenn dieser Parameter nicht angegeben oder auf 0 festgelegt ist. Der Schweregrad des Datenbankmodulfehlers reicht von 1 bis 24.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-FailoverPartner
Der Name oder die Adresse des Partnerservers, mit dem eine Verbindung hergestellt werden soll, wenn der primäre Server ausgefallen ist.
Typ: | String |
Position: | Named |
Standardwert: | "" |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-HostName
Gibt einen Arbeitsstationsnamen an. Der Arbeitsstationsname wird von der gespeicherten sp_who Systemprozedur und in der Hostnamenspalte der Sys.processes-Katalogansicht gemeldet. Wenn dieser Parameter nicht angegeben ist, ist der Standardwert der Name des Computers, auf dem Invoke-Sqlcmd ausgeführt wird. Dieser Parameter kann verwendet werden, um verschiedene Invoke-Sqlcmd Sitzungen zu identifizieren.
Typ: | String |
Aliase: | WorkstationID |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-HostNameInCertificate
Der Hostname, der beim Überprüfen des SQL Server TLS/SSL-Zertifikats verwendet werden soll. Sie müssen diesen Parameter übergeben, wenn Ihre SQL Server-Instanz für die Erzwingungsverschlüsselung aktiviert ist und Sie eine Verbindung mit einer Instanz mit hostname/shortname herstellen möchten. Wenn dieser Parameter nicht angegeben wird, ist das Übergeben des vollqualifizierten Domänennamens (Fully Qualified Domain Name, FQDN) an -ServerInstance erforderlich, um eine Verbindung mit einer SQL Server-Instanz herzustellen, die für die Erzwingungsverschlüsselung aktiviert ist.
Dieser Parameter ist neu in v22 des Moduls. Weitere Informationen finden Sie unter Verwandte Links
Strict Connection Encryption
.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-IgnoreProviderContext
Gibt an, dass dieses Cmdlet den Datenbankkontext ignoriert, der vom aktuellen SQLSERVER:\SQL-Pfad eingerichtet wurde. Wenn der Parameter "Database" nicht angegeben ist, verwendet dieses Cmdlet die Standarddatenbank für die aktuelle Anmelde-ID oder das Windows-Konto.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-IncludeSqlUserErrors
Gibt an, dass dieses Cmdlet SQL-Benutzerskriptfehler zurückgibt, die andernfalls standardmäßig ignoriert werden. Wenn dieser Parameter angegeben ist, entspricht dieses Cmdlet dem Standardverhalten des sqlcmd-Hilfsprogramms.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-InputFile
Gibt eine Datei an, die als Abfrageeingabe für dieses Cmdlet verwendet werden soll. Die Datei kann Transact-SQL Anweisungen, XQuery-Anweisungen und sqlcmd-Befehle und Skriptingvariablen enthalten. Geben Sie den vollständigen Pfad zur Datei an. Es wird erwartet, dass die Datei mit UTF-8 codiert wird.
Sie sollten nur Skripts aus vertrauenswürdigen Quellen ausführen. Stellen Sie sicher, dass alle Eingabeskripts mit den entsprechenden NTFS-Berechtigungen gesichert sind.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-KeyVaultAccessToken
Gibt ein Zugriffstoken für Schlüsseltresor in Azure Key Vault an. Verwenden Sie diesen Parameter, wenn eine spalte, die abgefragt werden soll, mit Always Encrypted mit einem Spaltenmasterschlüssel geschützt ist, der in einem Schlüsseltresor in Azure Key Vault gespeichert ist. Alternativ können Sie sich bei Azure mit Add-SqlAzureAuthenticationContext authentifizieren, bevor Sie dieses Cmdlet aufrufen.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ManagedHsmAccessToken
Gibt ein Zugriffstoken für verwaltete HSMs im Azure Key Vault an. Verwenden Sie diesen Parameter, wenn eine spalte, die abgefragt werden soll, mit Always Encrypted mit einem Spaltenmasterschlüssel geschützt ist, der in einem verwalteten HSM in Azure Key Vault gespeichert ist. Alternativ können Sie sich bei Azure mit Add-SqlAzureAuthenticationContext authentifizieren, bevor Sie dieses Cmdlet aufrufen.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-MaxBinaryLength
Gibt die maximale Anzahl von Bytes an, die für Spalten mit binären Zeichenfolgen-Datentypen zurückgegeben werden, z. B. binär und varbinary. Der Standardwert ist 1.024 Byte.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-MaxCharLength
Gibt die maximale Anzahl von Zeichen an, die für Spalten mit Zeichen- oder Unicode-Datentypen zurückgegeben werden, z. B. Char, nchar, varchar und nvarchar. Der Standardwert ist 4.000 Zeichen.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-MultiSubnetFailover
Wenn Ihre Anwendung eine Verbindung mit einer AlwaysOn Availability Group (AG) in verschiedenen Subnetzen herstellt, bietet das Übergeben dieses Parameters eine schnellere Erkennung und Verbindung mit dem (derzeit) aktiven Server.
Hinweis: Das Übergeben von -MultiSubnetFailover ist in .NET Framework 4.6.1 oder höheren Versionen nicht erforderlich.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-NewPassword
Gibt ein neues Kennwort für eine ANMELDE-ID der SQL Server-Authentifizierung an. Mit diesem Cmdlet wird das Kennwort geändert und dann beendet. Sie müssen auch die Parameter "Benutzername" und "Kennwort" angeben, wobei "Password" das aktuelle Kennwort für die Anmeldung angibt.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-OutputAs
Gibt den Typ der Ergebnisse an, die dieses Cmdlet abruft.
Wenn Sie keinen Wert für diesen Parameter angeben, legt das Cmdlet den Wert auf DataRows fest.
Typ: | OutputType |
Aliase: | As |
Zulässige Werte: | DataSet, DataTables, DataRows |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-OutputSqlErrors
Gibt an, dass dieses Cmdlet Fehlermeldungen in der Invoke-Sqlcmd Ausgabe anzeigt.
Typ: | Boolean |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Password
Gibt das Kennwort für die ANMELDE-ID der SQL Server-Authentifizierung an, die im Parameter "Username" angegeben wurde. Bei Kennwörtern wird zwischen Groß- und Kleinschreibung unterschieden. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung. Verwenden Sie nach Möglichkeit kein leeres Kennwort.
Wenn Sie den Parameter "Password" gefolgt von Ihrem Kennwort angeben, ist das Kennwort für jeden sichtbar, der Ihren Monitor sehen kann.
Wenn Sie das Kennwort gefolgt von Ihrem Kennwort in einem .ps1 Skript codieren, wird Ihr Kennwort von jedem Benutzer angezeigt, der die Skriptdatei liest.
Weisen Sie der Datei die entsprechenden NTFS-Berechtigungen zu, um zu verhindern, dass andere Benutzer die Datei lesen können.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ProgressAction
Bestimmt, wie PowerShell auf Statusaktualisierungen reagiert, die von einem Skript, Cmdlet oder Anbieter generiert werden, z. B. auf die Statusanzeigen, die vom Cmdlet Write-Progress generiert werden. Das Cmdlet Write-Progress erstellt Statusanzeigen, die den Status eines Befehls anzeigen.
Typ: | ActionPreference |
Aliase: | proga |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Query
Gibt eine oder mehrere Abfragen an, die dieses Cmdlet ausführt. Die Abfragen können Transact-SQL- oder XQuery-Anweisungen oder sqlcmd-Befehle sein. Mehrere Abfragen, die durch ein Semikolon getrennt sind, können angegeben werden. Geben Sie das sqlcmd GO-Trennzeichen nicht an. Escape aller doppelten Anführungszeichen, die in der Zeichenfolge enthalten sind. Erwägen Sie die Verwendung von klammern Bezeichnern wie [MyTable] anstelle von Bezeichnern wie "MyTable".
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-QueryTimeout
Gibt die Anzahl von Sekunden an, bevor das Timeout der Abfragen erfolgt. Wenn kein Timeoutwert angegeben ist, wird kein Timeout für die Abfragen ausgeführt. Das Timeout muss ein ganzzahliger Wert zwischen 1 und 65535 sein.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ServerInstance
Gibt eine Zeichenfolge oder ein SMO-Objekt (SQL Server Management Objects) an, das den Namen einer Instanz des Datenbankmoduls angibt. Geben Sie für Standardinstanzen nur den Computernamen "MyComputer" an. Verwenden Sie für benannte Instanzen das Format "ComputerName\InstanceName".
Typ: | PSObject |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-SeverityLevel
Gibt die untere Grenze für den Schweregrad der Fehlermeldung an, die dieses Cmdlet zur Windows PowerShell-Variable ERRORLEVEL zurückgibt.
Dieses Cmdlet gibt den höchsten Schweregrad aus den von den ausgeführten Abfragen generierten Fehlermeldungen zurück, vorausgesetzt, der Schweregrad ist gleich oder höher als im Parameter "SeverityLevel" angegeben.
Wenn "SeverityLevel" nicht angegeben oder auf "0" festgelegt ist, gibt dieses Cmdlet "0" auf "ERRORLEVEL" zurück.
Die Schweregrad der Fehlermeldungen des Datenbankmoduls reichen von 1 bis 24.
Dieses Cmdlet meldet keine Schweregrade für Informationsnachrichten, die einen Schweregrad von 10 aufweisen.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-StatisticsVariable
Geben Sie den Namen einer PowerShell-Variable an, der die SQL Server-Laufzeitstatistiken zugewiesen wird, wenn das Cmdlet ausgeführt wird.
Die allgemeine Verwendung für diesen Parameter besteht darin, die ExecutionTime
(die kumulierte Zeit (in Millisekunden) zu erfassen, die der Anbieter für die Verarbeitung des Cmdlets aufgewendet hat), oder IduRows
(die Gesamtanzahl der Zeilen, die von INSERT-, DELETE- und UPDATE-Anweisungen betroffen sind).
Weitere Informationen finden Sie unter Anbieterstatistik für SQL Server-.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-SuppressProviderContextWarning
Gibt an, dass dieses Cmdlet die Warnung unterdrückt, dass dieses Cmdlet im Datenbankkontext aus der aktuellen SQLSERVER:\SQL-Pfadeinstellung verwendet wurde, um den Datenbankkontext für das Cmdlet einzurichten.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-TrustServerCertificate
Gibt an, ob der Kanal verschlüsselt wird, während die Zertifikatkette umgangen wird, um die Vertrauensstellung zu überprüfen.
Dieser Parameter ist neu in v22 des Moduls. Weitere Informationen finden Sie unter Verwandte Links
Strict Connection Encryption
.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Username
Gibt die Anmelde-ID zum Herstellen einer SQL Server-Authentifizierungsverbindung zu einer Instanz des Datenbankmoduls an.
Das Kennwort muss über den Parameter "Password" angegeben werden.
Wenn Benutzername und Kennwort nicht angegeben sind, versucht dieses Cmdlet eine Windows-Authentifizierungsverbindung mit dem Windows-Konto, das die Windows PowerShell-Sitzung ausführt. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Variable
Gibt einen Satz von sqlcmd-Skriptvariablen für die Verwendung im sqlcmd-Skript an und legt einen Wert für die Variablen fest.
Verwenden Sie ein Windows PowerShell-Array, um mehrere Variablen und deren Werte anzugeben; alternativ können Sie eine Hashtable
verwenden, bei der der Schlüssel den Variablennamen und den Wert des Variablenwerts darstellt.
Bei Verwendung eines Arrays werden Parameterwerte gekürzt. Dieses Verhalten wurde in v22 des Moduls zur Abwärtskompatibilität mit v21 beibehalten. Es wird empfohlen, sich nicht auf dieses Verhalten zu verlassen, was sich in einer zukünftigen Hauptversion des Moduls ändern kann.
Der Parameter vom Typ
Hashtable
ist nur in v22+ des Moduls verfügbar.
Typ: | PSObject |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
System.Management.Automation.PSObject
Ausgaben
System.Object