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 Principal
Managed 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