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>]
      [-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>]
      [-NewPassword <String>]
      [-Variable <String[]>]
      [-InputFile <String>]
      [-OutputSqlErrors <Boolean>]
      [-IncludeSqlUserErrors]
      [-SuppressProviderContextWarning]
      [-IgnoreProviderContext]
      [-OutputAs <OutputType>]
      [-StatisticsVariable <String>]
      [<CommonParameters>]
Invoke-Sqlcmd
      [[-Query] <String>]
      [-QueryTimeout <Int32>]
      [-ErrorLevel <Int32>]
      [-SeverityLevel <Int32>]
      [-MaxCharLength <Int32>]
      [-MaxBinaryLength <Int32>]
      [-AbortOnError]
      [-DisableVariables]
      [-DisableCommands]
      [-Variable <String[]>]
      [-InputFile <String>]
      [-OutputSqlErrors <Boolean>]
      [-IncludeSqlUserErrors]
      [-OutputAs <OutputType>]
      -ConnectionString <String>
      [-StatisticsVariable <String>]
      [<CommonParameters>]

Beschreibung

Das Cmdlet Invoke-Sqlcmd führt ein Skript aus, das die Sprachen und Befehle enthält, die vom SQL Server SQLCMD-Dienstprogramm 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 hauptsächlich mit der interaktiven Skriptbearbeitung zusammenhängen.

Die Befehle :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :perftrace und :serverlist werden nicht unterstützt.

Wenn dieses Cmdlet ausgeführt wird, wird der erste Ergebnissatz, den das Skript zurückgibt, als formatierte Tabelle angezeigt.

Wenn nachfolgende Ergebnissätze unterschiedliche Spaltenlisten als die erste enthalten, werden diese Ergebnissätze nicht angezeigt.

Wenn nachfolgende Ergebnissätze nach dem ersten Satz dieselbe Spaltenliste aufweisen, werden ihre Zeilen an die formatierte Tabelle angefügt, die die Zeilen enthält, die vom ersten Ergebnissatz zurückgegeben wurden.

Sie können SQL Server Nachrichtenausgabe 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

PS C:\> Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery" -ServerInstance "MyComputer\MainInstance"

TimeOfQuery
-----------
9/21/2017 2:48:24 PM

Mit diesem Befehl wird eine Verbindung mit einer benannten Instanz des SQL-Datenbank Engine auf einem Computer hergestellt und ein grundlegendes Transact-SQL-Skript ausgeführt.

Beispiel 2: Aufrufen von Befehlen in einer Skriptdatei und Speichern der Ausgabe in einer Textdatei

PS C:\> 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, sodass Sie die Ausgabedateien mit den entsprechenden NTFS-Berechtigungen sichern sollten.

Beispiel 3: Aufrufen eines Skripts und Übergeben von Variablenwerten aus einer Zeichenfolge

PS C:\> $StringArray = "MYVAR1='String1'", "MYVAR2='String2'"
PS C:\> Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2" -Variable $StringArray

Var1     Var2
----     ----
String1  String2

Dieser Befehl verwendet ein Array von Zeichenzeichenfolgen als Eingabe für den Variablenparameter.

Das Array definiert mehrere SQLCMD-Variablen.

Die $-Zeichen in der SELECT-Anweisung, die die SQLCMD-Variablen identifizieren, werden mithilfe des Back-Tick (') -Zeichens escapet.

Beispiel 4: Aufrufen eines Skripts und Übergeben von Variablen aus dem SQL-Datenbankmodul

PS C:\> 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 PowerShell-Anbieterpfad von SQL ServerWindows für eine Instanz des SQL-Datenbank Engine 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

PS C:\> Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
PS C:\> 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 positionalen Zeichenfolge als Eingabe

PS C:\> 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 an den Abfrageparameter zu übermitteln.

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

PS C:\> $DS = Invoke-Sqlcmd -ServerInstance "MyComputer" -Query "SELECT  ID, Item FROM MyDB.dbo.MyTable" -As DataSet
PS C:\> $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

PS C:\> $Tables = Invoke-Sqlcmd -ServerInstance "MyComputer" -Query "SELECT  Item, id FROM MyDatabase.dbo.MyTable; SELECT GETDATE() AS T" -As DataTables
PS C:\> $Tables[0].Rows | %{ echo $_.ID }
PS C:\> $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.Data.DataTable-Objekten zu erfassen. Der Befehl ruft zwei Tabellen mit unterschiedlichen Spaltensätzen ab.

Jede Tabelle kann einzeln verarbeitet werden, basierend auf ihrem eigenen Schema.

Beispiel 9: Vollständige Kontrolle über eine Verbindung

PS C:\> 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 erhält der Parameter "-ConnectionString " die vollständige Kontrolle über die verbindung, die dieses Cmdlet erstellt, anstatt die Invoke-Sqlcmd, um die Verbindungszeichenfolge basierend auf den an der Befehlszeile übergebenen Parametern zu erstellen.

Dies ist nützlich für weniger gängige Eigenschaften, die Sie verwenden möchten.

Beispiel 10: Ausführen einer gespeicherten Prozedur und Erfassen der SQL-Fehler

PS C:\> $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
PS C:\> Invoke-SqlCmd -ServerInstance MyServer -Query 'CREATE DATABASE TestDB'
# ... adds a stored procedure that has errors in it...
PS C:\> Invoke-SqlCmd -ServerInstance MyServer -Database 'TestDB' -Query $script_sp_with_errors
# ... executes the SP and collected the errors
PS C:\> 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
...

Dieser Befehl verwendet den 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 Azure SQL Datenbank (oder verwaltete 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 Azure SQL Datenbank (oder verwaltete 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 Azure SQL Datenbank (oder verwaltete Instanz) mithilfe einer verwalteten Identität

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 the Access Token from the machine
$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'

Dieses Beispiel ähnelt der obigen. Es zeigt nur die Flexibilität des AccessToken-Parameters an.

Beispiel 14: Herstellen einer Verbindung mit einer Verfügbarkeitsgruppe, die für Read-Only Routing mit -ApplicationIntent konfiguriert ist

# 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

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 -ApplicationName und -HostName Parameter, um die beiden Ergebnisse visuell zu unterscheiden: Dies ist eine gängige Technik, die verwendet werden kann, um Verbindungen und ihre Absichten zu verfolgen, über das hier dargestellte Beispiel "-ApplicationIntent".

Beispiel 15: Erfassen von Verbindungsstatistiken über den Parameter "-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

In diesem Beispiel wird gezeigt, wie Sie mithilfe des -StatisticsVariable Parameters Informationen über die Verbindung, die ausgeführten Anweisungen und die Ausführungszeit beim Ausführen einiger T-SQL-Dateien erfassen, die eine temporäre Tabelle erstellen, einen Wert einfügen und schließlich eine Auswahl ausgibt, um alle eingefügten Zeilen abzurufen.

Hinweis: Wenn die gleiche Abfrage für mehrere Server ausgeführt wird (z. B. durch Die Leitung der Servernamen durch das Cmdlet), erfasst dies StatisticsVariable ein Array von Statistiken, eine für jede Verbindung. Die Ergebnisse können dann mithilfe von z. B ($stats.IduRows | Measure-Object -Sum).Sum. aggregiert werden.

Weitere Informationen zu den verfügbaren Statistiken finden Sie in der Anbieterstatistik für SQL Server.

Parameter

-AbortOnError

Gibt an, dass dieses Cmdlet den befehl SQL Server beendet und eine Fehlerstufe an die Windows PowerShell ERRORLEVEL-Variable zurückgibt, wenn dieses Cmdlet einen Fehler auftritt.

Bei einem Fehlerschweregrad über 10 wird die Fehlerstufe 1 und bei einem Fehlerschweregrad von maximal 10 die Fehlerstufe 0 zurückgegeben.

Wenn der Parameter ErrorLevel ebenfalls angegeben ist, gibt dieses Cmdlet nur 1 zurück, wenn der Schweregrad der Fehlermeldung auch gleich oder höher ist als der für ErrorLevel angegebene Wert.

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

-AccessToken

Ein gültiges Zugriffstoken, das zur Authentifizierung bei SQL Server verwendet werden soll, alternativ zum Benutzer/Kennwort oder zur Windows-Authentifizierung.

Dies kann z. B. verwendet werden, um eine Verbindung mit SQL Azure DB einer oder einer Service PrincipalManaged Identity (siehe Verweise am unteren Rand dieser Seite) herzustellen und SQL Azure Managed Instance zu verwenden.

Geben Sie bei Verwendung dieses Parameters keinen Benutzernamen, kein Kennwort oder anmeldeinformationen an.

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

-ApplicationIntent

Der Anwendungsauslastungstyp beim Herstellen einer Verbindung mit einer Datenbank in einer SQL Server Verfügbarkeitsgruppe.

Zulässige Werte sind: ReadOnly und ReadWrite.

Type:ApplicationIntent
Position:Named
Default value:ReadWrite
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

Der Name der Anwendung, die der Verbindung zugeordnet ist.

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

-ConnectionString

Gibt eine Verbindungszeichenfolge an, die eine Verbindung mit dem Server herstellt.

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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 wird, verursachen Verbindungsversuche kein Timeout.

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

-Credential

Das PSCredential-Objekt, dessen Benutzernamen- und Kennwortfelder verwendet werden, um eine Verbindung mit der SQL-Instanz herzustellen.

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

-Database

Gibt den Namen einer Datenbank an. Mit diesem Cmdlet wird eine Verbindung mit dieser Datenbank in der Instanz hergestellt, die im ServerInstance-Parameter angegeben ist.

Wenn der Datenbankparameter 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 bereit, 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 bereit. Wenn Sie den Parameterschalter "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.

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

-DedicatedAdministratorConnection

Gibt an, dass dieses Cmdlet eine dedizierte Administratorverbindung (DAC) verwendet, um eine Verbindung mit einer Instanz des Datenbankmoduls herzustellen.

DACs werden vom Systemadministrator beispielsweise für die Problembehandlung von Instanzen verwendet, die keine neuen Standardverbindungen akzeptieren.

Die Instanz muss für die Unterstützung von DACs konfiguriert sein.

Wenn DAC nicht aktiviert ist, meldet dieses Cmdlet einen Fehler und wird nicht ausgeführt.

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

-DisableCommands

Gibt an, dass dieses Cmdlet einige sqlcmd-Features deaktiviert, die die Sicherheit beim Ausführen in Batchdateien beeinträchtigen können.

Es verhindert, dass Windows PowerShell Variablen an das skript Invoke-Sqlcmd übergeben werden.

Das in der SQLCMDINI-Skriptvariablen angegebene Startskript wird nicht ausgeführt.

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

-DisableVariables

Gibt an, dass dieses Cmdlet sqlcmd-Skriptingvariablen ignoriert. Dies erweist sich als nützlich, wenn ein Skript mehrere INSERT-Anweisungen enthält, die Zeichenfolgen im selben Format wie Variablen enthalten können, wie z. B. $(variable_name).

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

-EncryptConnection

Gibt an, dass dieses Cmdlet die SSL-Verschlüsselung (Secure Sockets Layer) für die Verbindung mit der Instanz des Datenbankmoduls verwendet, das im ServerInstance-Parameter angegeben ist.

Wenn dieser Parameter angegeben ist, wird SSL-Verschlüsselung verwendet.

Wenn Sie diesen Parameter nicht angeben, wird die angegebene Verschlüsselung nicht verwendet.

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

-ErrorLevel

Gibt an, dass dieses Cmdlet nur Fehlermeldungen anzeigt, deren Schweregrad gleich oder höher ist als der angegebene Wert. Alle Fehlermeldungen werden angezeigt, wenn dieser Parameter nicht angegeben oder auf 0 festgelegt ist. Schweregrade für Datenbank-Engine-Fehler liegen zwischen 1 und 24.

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

-FailoverPartner

Der Name oder die Adresse des Partnerservers, mit dem eine Verbindung hergestellt werden soll, wenn der primäre Server herunter ist.

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

-HostName

Gibt einen Arbeitsstationsnamen an. Der Arbeitsstationsname wird durch die gespeicherte Systemprozedur sp_who und in der Spalte hostname der sys.processes-Katalogsicht angegeben. Wenn dieser Parameter nicht angegeben wird, ist der Standardname des Computers, auf dem Invoke-Sqlcmd ausgeführt wird. Dieser Parameter kann verwendet werden, um verschiedene Invoke-Sqlcmd Sitzungen zu identifizieren.

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

-IgnoreProviderContext

Gibt an, dass dieses Cmdlet den Datenbankkontext ignoriert, der vom aktuellen SQLSERVER:\SQL-Pfad eingerichtet wurde. Wenn der Datenbankparameter nicht angegeben wird, verwendet dieses Cmdlet die Standarddatenbank für die aktuelle Anmelde-ID oder das Windows-Konto.

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

-IncludeSqlUserErrors

Gibt an, dass dieses Cmdlet SQL-Benutzerskriptfehler zurückgibt, die standardmäßig ignoriert werden. Wenn dieser Parameter angegeben wird, entspricht dieses Cmdlet dem Standardverhalten des sqlcmd-Dienstprogramms.

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

-InputFile

Gibt eine Datei an, die als Abfrageeingabe für dieses Cmdlet verwendet werden soll. Die Datei kann Transact-SQL-Anweisungen, XQuery-Anweisungen sowie sqlcmd-Befehle und Skriptvariablen enthalten. Geben Sie den vollständigen Pfad zur Datei an. Leerzeichen im Dateipfad oder -namen sind nicht zulässig. Die Datei wird voraussichtlich mithilfe von UTF-8 codiert.

Sie sollten nur Skripts aus vertrauenswürdigen Quellen ausführen. Stellen Sie sicher, dass alle Eingabeskripts durch die geeigneten NTFS-Berechtigungen abgesichert sind.

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

-MaxBinaryLength

Gibt die maximale Anzahl von Bytes an, die für Spalten mit binären Zeichenfolgendatentypen wie binary und varbinary zurückgegeben werden. Der Standardwert ist 1.024 Bytes.

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

-MaxCharLength

Gibt die maximale Anzahl von Zeichen an, die für Spalten mit Zeichen- oder Unicode-Datentypen zurückgegeben werden, wie char, nchar, varchar und nvarchar. Der Standardwert beträgt 4.000 Zeichen.

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

-MultiSubnetFailover

Wenn Ihre Anwendung eine Verbindung mit einer AlwaysOn-Verfügbarkeitsgruppe (AG) auf verschiedenen Subnetzen herstellt, bietet das Übergeben dieses Parameters eine schnellere Erkennung und Verbindung mit dem (derzeit) aktiven Server.

Hinweis: Übergeben -MultiSubnetFailover ist nicht mit .NET Framework 4.6.1 oder höheren Versionen erforderlich.

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

-NewPassword

Gibt ein neues Kennwort für eine Anmelde-ID der SQL Server-Authentifizierung an. Dieses Cmdlet ändert das Kennwort und beendet dann das Kennwort. Sie müssen auch die Parameter "Benutzername" und "Kennwort" angeben, die das aktuelle Kennwort für die Anmeldung angibt.

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

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

-OutputSqlErrors

Gibt an, dass dieses Cmdlet Fehlermeldungen im Invoke-Sqlcmd Ausgabe anzeigt.

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

-Password

Gibt das Kennwort für die anmelde-ID der SQL Server Authentifizierung an, die im Parameter "Benutzername" angegeben wurde. Bei Kennwörtern wird nach Groß- und Kleinschreibung unterschieden. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung. Lassen Sie das Kennwortfeld nicht leer, sondern verwenden Sie möglichst ein sicheres Kennwort.

Wenn Sie den Kennwortparameter 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 coden, wird jeder, der die Skriptdatei liest, Ihr Kennwort angezeigt.

Weisen Sie der Datei die geeigneten NTFS-Berechtigungen zu, um zu verhindern, dass sie von anderen Benutzern gelesen werden kann.

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

-Query

Gibt eine oder mehrere Abfragen an, die dieses Cmdlet ausführt. Die Abfragen können als Transact-SQL- oder XQuery-Anweisungen bzw. sqlcmd-Befehle vorliegen. Es können mehrere durch Semikolons (;) getrennte Abfragen angegeben werden. Das sqlcmd-Trennzeichen GO sollte nicht angegeben werden. Doppelte Anführungszeichen in einer Zeichenfolge müssen mit einem Escapezeichen versehen werden. Verwenden Sie Bezeichner in eckigen Klammern, z. B. [MeineTabelle], anstelle von Bezeichnern in Anführungszeichen, wie "MeineTabelle".

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

-QueryTimeout

Gibt die Anzahl der Sekunden an, bevor die Abfragen zeitüberschreitungen. Wenn ein Timeoutwert nicht angegeben wird, werden die Abfragen nicht timeout. Das Timeout muss ein ganzzahliger Wert zwischen 1 und 65535 sein.

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

-ServerInstance

Gibt eine Zeichenzeichenfolge oder SQL Server Verwaltungsobjekte (SMO) an, die den Namen einer Instanz des Datenbankmoduls angibt. Geben Sie für Standardinstanzen nur den Computernamen an: MyComputer. Verwenden Sie für benannte Instanzen das Format "ComputerName\InstanceName".

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

-SeverityLevel

Gibt den unteren Grenzwert für den Schweregrad der Fehlermeldung an, der dieses Cmdlet zurückgibt, an die ERRORLEVEL Windows PowerShell Variable.

Dieses Cmdlet gibt die höchste Schweregradstufe aus den vom ausgeführten Abfragen generierten Fehlermeldungen zurück, sofern der Schweregrad gleich oder höher ist als im Schweregradparameter angegeben.

Wenn Schweregrad nicht angegeben oder auf 0 festgelegt ist, gibt dieses Cmdlet 0 auf ERRORLEVEL zurück.

Die Schweregrade für Datenbank-Engine-Fehlermeldungen liegen zwischen 1 und 24.

Dieses Cmdlet meldet keine Schweregrade für Informationsnachrichten, die einen Schweregrad von 10 haben.

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

-StatisticsVariable

Geben Sie den Namen einer PowerShell-Variable an, die den SQL Server Laufzeitstatistiken zugewiesen wird, wenn das Cmdlet ausgeführt wird.

Die allgemeine Verwendung für diesen Parameter besteht darin, die kumulierte Zeit (in Millisekunden) zu erfassen ExecutionTime , die der Anbieter für die Verarbeitung des Cmdlets verwendet hat, oder IduRows (die Gesamtzahl der Zeilen, die von INSERT, DELETE und UPDATE-Anweisungen betroffen sind).

Weitere Details finden Sie unter Anbieterstatistiken für SQL Server.

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

-SuppressProviderContextWarning

Gibt an, dass dieses Cmdlet die Warnung unterdrückt, dass dieses Cmdlet im Datenbankkontext aus der aktuellen SQLSERVER:\SQL-Pfadeinstellung verwendet hat, um den Datenbankkontext für das Cmdlet festzulegen.

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

-Username

Gibt die Anmelde-ID an, über die eine SQL Server-Authentifizierungsverbindung mit einer Instanz der Datenbank-Engine hergestellt wird.

Das Kennwort muss über den Kennwortparameter 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.

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

-Variable

Gibt als Zeichenfolgenarray eine sqlcmd-Skriptingvariable für die Verwendung im sqlcmd-Skript an und legt einen Wert für die Variable fest.

Verwenden Sie ein Windows PowerShell Array, um mehrere Variablen und deren Werte anzugeben.

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

Eingaben

System.Management.Automation.PSObject

PSObject

Ausgaben

Formatierte Tabelle