Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Invoke-Sqlcmd ist ein SQL Server-Cmdlet , das Skripts ausführt, die Anweisungen aus den Sprachen (Transact-SQL und XQuery) und Befehlen enthalten, die vom sqlcmd-Hilfsprogramm unterstützt werden.
Verwenden von Invoke-Sqlcmd
Mit dem Cmdlet Invoke-Sqlcmd können Sie Ihre sqlcmd-Skriptdateien in einer Windows PowerShell-Umgebung ausführen. Viele Möglichkeiten, die Sie mit sqlcmd ausführen können, können auch mit Invoke-Sqlcmd ausgeführt werden.
Dies ist ein Beispiel für das Aufrufen von Invoke-Sqlcmd zum Ausführen einer einfachen Abfrage, ähnlich der Angabe von sqlcmd mit den Optionen -Q und -S :
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"
Dies ist ein Beispiel für das Aufrufen von Invoke-Sqlcmd, das Angeben einer Eingabedatei und das Anfügen der Ausgabe an eine Datei. Dies ähnelt der Angabe von sqlcmd mit den Optionen -i und -o :
Invoke-Sqlcmd -InputFile "C:\MyFolder\TestSQLCmd.sql" | Out-File -FilePath "C:\MyFolder\TestSQLCmd.rpt"
Dies ist ein Beispiel für die Verwendung eines Windows PowerShell-Arrays zum Übergeben mehrerer sqlcmd-Skriptingvariablen an Invoke-Sqlcmd. Die Zeichen "$" zur Identifizierung der sqlcmd-Skriptingvariablen in der SELECT-Anweisung wurden durch das Escapezeichen "`" des PowerShell-Backticks maskiert.
$MyArray = "MyVar1 = 'String1'", "MyVar2 = 'String2'"
Invoke-Sqlcmd -Query "SELECT `$(MyVar1) AS Var1, `$(MyVar2) AS Var2;" -Variable $MyArray
Dies ist ein Beispiel für die Verwendung des SQL Server-Anbieters für Windows PowerShell, um zu einer Instanz des Datenbankmoduls zu navigieren, und dann mithilfe des Windows PowerShell Get-Item-Cmdlets das SMO Server-Objekt für die Instanz abzurufen und es an Invoke-Sqlcmd zu übergeben.
Set-Location SQLSERVER:\SQL\MyComputer\MyInstance
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance (Get-Item .)
Der parameter -Query ist positional und muss nicht benannt werden. Wenn die erste Zeichenfolge, die an Invoke-Sqlcmd übergeben wird, unbenannt ist, wird sie als -Query-Parameter behandelt.
Invoke-Sqlcmd "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"
Pfadkontext in Invoke-Sqlcmd
Wenn Sie den parameter -Database nicht verwenden, wird der Datenbankkontext für Invoke-Sqlcmd durch den Pfad festgelegt, der aktiv ist, wenn das Cmdlet aufgerufen wird.
| Pfad | Datenbankkontext |
|---|---|
| Beginnt mit einem anderen Laufwerk als SQLSERVER: | Die Standarddatenbank für die Anmelde-ID in der Standardinstanz auf dem lokalen Computer. |
| SQLSERVER:\SQL | Die Standarddatenbank für die Anmelde-ID in der Standardinstanz auf dem lokalen Computer. |
| SQLSERVER:\SQL\ComputerName | Die Standarddatenbank für die Anmelde-ID in der Standardinstanz auf dem angegebenen Computer. |
| SQLSERVER:\SQL\ComputerName\InstanceName | Die Standarddatenbank für die Anmelde-ID in der angegebenen Instanz auf dem angegebenen Computer. |
| SQLSERVER:\SQL\ComputerName\InstanceName\Datenbanken | Die Standarddatenbank für die Anmelde-ID in der angegebenen Instanz auf dem angegebenen Computer. |
| SQLSERVER:\SQL\ComputerName\InstanceName\Databases\DatabaseName | Die angegebene Datenbank in der angegebenen Instanz auf dem angegebenen Computer. Dies gilt auch für längere Pfade, z. B. einen Pfad, der den Knoten "Tabellen" und "Spalten" in einer Datenbank angibt. |
Angenommen, die Standarddatenbank für Ihr Windows-Konto in der Standardinstanz des lokalen Computers ist Master. Anschließend würden die folgenden Befehle master zurückgeben:
Set-Location SQLSERVER:\SQL
Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
Die folgenden Befehle würden AdventureWorks2012 zurückgeben:
Set-Location SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2012\Tables\Person.Person
Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
Invoke-Sqlcmd gibt eine Warnung an, wenn der Pfaddatenbankkontext verwendet wird. Sie können den parameter -SuppressProviderContextWarning verwenden, um die Warnmeldung zu deaktivieren. Sie können den parameter -IgnoreProviderContext verwenden, um Invoke-Sqlcmd anweisen, immer die Standarddatenbank für die Anmeldung zu verwenden.
Vergleich von Invoke-Sqlcmd und dem sqlcmd-Dienstprogramm
Invoke-Sqlcmd kann verwendet werden, um viele der Skripts auszuführen, die mit dem sqlcmd-Hilfsprogramm ausgeführt werden können. Invoke-Sqlcmd wird jedoch in einer Windows PowerShell-Umgebung ausgeführt, die sich von der Befehlszeilenumgebung unterscheidet, in der sqlcmd ausgeführt wird. Das Verhalten von Invoke-Sqlcmd wurde geändert, um in einer Windows PowerShell-Umgebung zu arbeiten.
Nicht alle sqlcmd-Befehle werden in Invoke-Sqlcmd implementiert. Befehle, die nicht implementiert sind, umfassen: :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :p erftrace und :serverlist.
Invoke-Sqlcmd initialisiert nicht die sqlcmd-Umgebung oder Skriptvariablen wie SQLCMDDBNAME oder SQLCMDWORKSTATION.
Invoke-Sqlcmd zeigt keine Meldungen an, z. B. die Ausgabe von PRINT-Anweisungen, es sei denn, Sie geben den allgemeinen Windows PowerShell -Verbose-Parameter an. Beispiel:
Invoke-Sqlcmd -Query "PRINT N'abc';" -Verbose
Nicht alle sqlcmd-Parameter werden in einer PowerShell-Umgebung benötigt. Beispielsweise formatiert Windows PowerShell alle Ausgaben von Cmdlets, sodass die sqlcmd-Parameter , die Formatierungsoptionen angeben, nicht in Invoke-Sqlcmd implementiert werden. Die folgende Tabelle zeigt die Beziehung zwischen den Invoke-Sqlcmd-Parametern und sqlcmd-Optionen:
| BESCHREIBUNG | Die sqlcmd-Option | Invoke-Sqlcmd Parameter |
|---|---|---|
| Server- und Instanzname. | -S | -ServerInstance |
| Die zu verwendende Anfangsdatenbank. | -d | -Datenbank |
| Führen Sie die angegebene Abfrage aus, und beenden Sie sie. | -Q | -Frage |
| ANMELDE-ID der SQL Server-Authentifizierung. | -U | -Nutzername |
| SQL Server-Authentifizierungskennwort. | -P | -Passwort |
| Variable Definition. | -v | -Variable |
| Abfrage-Zeitüberschreitungsintervall | -t | -QueryTimeout |
| Beenden der Ausführung bei einem Fehler | -b | -AbortOnError |
| Dedizierte Administratorverbindung. | -A | -DedizierteAdministratorverbindung |
| Deaktivieren Sie interaktive Befehle, Startskripts und Umgebungsvariablen. | -X | -DisableCommands |
| Variablenersetzung deaktivieren. | -x | -DeaktivierenVariablen |
| Mindestschweregrad für Meldung. | -V | -SeverityLevel |
| Mindestfehlerstufe, die gemeldet werden soll. | -m | -ErrorLevel |
| Anmelde-Timeout-Intervall | -l | -Verbindungszeitüberschreitung |
| Hostnamen. | -H | -HostName |
| Kennwort ändern und beenden. | -Z | -NeuesPasswort |
| Eingabedatei mit einer Abfrage | -Ich | -InputFile |
| Maximale Länge der Zeichenausgabe. | -w | -MaxCharLength |
| Maximale Länge der binären Ausgabe. | -w | -MaxBinaryLänge |
| Stellen Sie eine Verbindung mit SSL-Verschlüsselung her. | Kein Parameter | -EncryptConnection |
| Anzeigefehler | Kein Parameter | -OutputSqlErrors |
| Ausgabemeldungen an stderr. | -r | Kein Parameter |
| Verwenden der regionalen Einstellungen des Clients | -R | Kein Parameter |
| Führen Sie die angegebene Abfrage aus, und bleiben Sie aktiv. | -q | Kein Parameter |
| Codepage, die für Ausgabedaten verwendet werden soll. | f- | Kein Parameter |
| Ein Passwort ändern und weiterlaufen lassen | -Z | Kein Parameter |
| Paketgröße | -ein | Kein Parameter |
| Spaltentrennzeichen | -s | Kein Parameter |
| Ausgabeheader steuern | -h | Kein Parameter |
| Angabe von Steuerzeichen | -k | Kein Parameter |
| Breite der Anzeige mit fester Länge | -Y | Kein Parameter |
| Breite der anzeigevariablen Länge | -y | Kein Parameter |
| Echoeingabe | -e | Kein Parameter |
| Aktivieren von Bezeichnern in Anmerkungen | -Ich | Kein Parameter |
| Entfernen der nachgestellten Leerzeichen | -W | Kein Parameter |
| Instanzen auflisten | -L | Kein Parameter |
| Formatieren der Ausgabe als Unicode | -u | Kein Parameter |
| Statistiken drucken | -p | Kein Parameter |
| Befehlsende | -c | Kein Parameter |
| Herstellen einer Verbindung mithilfe der Windows-Authentifizierung | -E | Kein Parameter |
Siehe auch
Verwenden Sie die Cmdlets des Datenbankmoduls
sqlcmd Utility
Verwenden des Hilfsprogramms sqlcmd