Verwenden der SQL Server-Cmdlets

Windows PowerShell-Cmdlets sind Einzelfunktionsbefehle, für die i. d. R. eine Verb-Substantiv-Namenskonvention gilt, z. B. Get-Help oder Set-MachineName. Der SQL Server-Anbieter für Windows PowerShell bietet für SQL Server spezifische Cmdlets.

SQL Server-Cmdlets

SQL Server 2008 implementiert eine kleine Anzahl von SQL Server-Cmdlets.

In der Windows PowerShell-Umgebung stellt das Cmdlet Get-Help Hilfeinformationen für jedes Cmdlet bereit. Get-Help gibt Informationen wie Syntax, Parameterdefinitionen, Eingabe- und Ausgabetypen und eine Beschreibung der vom Cmdlet durchgeführten Aktion zurück.

Die folgenden Beispiele geben die grundlegende Hilfe, die vollständige Hilfe, das Syntaxdiagramm, die Parameter und die Beispiele für das SQL Server-Cmdlet Encode-SqlName zurück:

get-help "Encode-SqlName"
get-help "Encode-SqlName" -Full
get-help "Encode-SqlName" -Syntax
get-help "Encode-SqlName" -Parameter *
get-help "Encode-SqlName" -Examples

Invoke-Sqlcmd

Invoke-Sqlcmd unterstützt ausgeführte sqlcmd-Skripts oder -Befehle, die Transact-SQL-Anweisung oder XQuery-Anweisung enthalten. Es akzeptiert die sqlcmd-Eingabe entweder als Zeichenfolgen-Eingabeparameter oder als Name einer zu öffnenden Skriptdatei. Weitere Informationen finden Sie unter Verwenden des Invoke-Sqlcmd-Cmdlets.

Invoke-PolicyEvaluation

Invoke-PolicyEvaluation meldet, ob ein Zielsatz von SQL Server-Objekten den Bedingungen entspricht, die in richtlinienbasierten Verwaltungsrichtlinien definiert sind. Optional können mit dem Cmdlet alle festlegbaren Optionen in den Zielobjekten neu konfiguriert werden, die den Richtlinienbedingungen nicht entsprechen. Weitere Informationen finden Sie unter Verwenden des Invoke-PolicyEvaluation-Cmdlets.

Codierung und Decodierung von SQL Server-Bezeichnern

Bezeichner sind die Namen von SQL Server-Objekten. SQL Server-Bezeichner unterstützen einen größeren Zeichenbereich als die Windows PowerShell-Sprache. In Klammern oder Anführungszeichen eingeschlossene Database Engine (Datenbankmodul)-Bezeichner unterliegen nur wenigen Beschränkungen hinsichtlich der in den Namen verwendeten Zeichen. Einige der Zeichen, die in den in Klammern oder Anführungszeichen eingeschlossenen Bezeichnern vorkommen, können nicht mit dem Escapezeichen "`" von Windows PowerShell versehen werden, was zu Problemen bei Verwendung des SQL Server-Anbieters führen kann.

Das Cmdlet Encode-SqlName nimmt SQL Server-Bezeichner als Eingabe auf und formatiert alle nicht von der Windows PowerShell-Sprache unterstützten Zeichen neu in eine Darstellung, die in Windows PowerShell funktioniert. Das Cmdlet Decode-SqlName nimmt einen codierten SQL Server-Bezeichner als Eingabe auf und gibt den ursprünglichen Bezeichner zurück. Zum Beispiel:

  • Encode-SqlName "Table:Test" gibt die Zeichenfolge "Table%3ATest" zurück.

  • Decode-SqlName "Table%3ATest" gibt "Table:Test" zurück.

Weitere Informationen finden Sie unter Verwenden von SQL Server-Bezeichnern in PowerShell.

Konvertieren von URNs in Pfade

Das SQL Server Management Object-Modell (SMO-Modell) erstellt einheitliche Ressourcennamen (Uniform Resource Names, URN) für seine Objekte. Jede URN weist die gleichen Informationen wie einen Pfad zum Objekt auf, aber in einer anderen Form. Dies ist beispielsweise der Pfad zu einer Tabelle:

SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2008R2\Tables\Person.Address

Und dies ist die URN zum gleichen Objekt:

Server[@Name='MyComputer']\Database[@Name='AdventureWorks2008R2']\Table[@Name='Address' and @Schema='Person']

Das Cmdlet Convert-UrnToPath konvertiert SMO-URN-Zeichenfolgen in Windows PowerShell-Pfade. Wenn Knotennamen erweiterte Zeichen enthalten, die in Windows PowerShell-Pfadnamen nicht unterstützt werden, codiert Convert-UrnToPath sie in ihrer hexadezimalen Darstellung. Zum Beispiel wird "Meine:Tabelle" als "Meine%3ATabelle" zurückgegeben.

Führen Sie als Beispiele für die Verwendung des Cmdlets in Windows PowerShell "Get-Help Convert-UrnToPath"-Beispiele aus.

Partielle Parameternamen

Sie müssen nicht den ganzen Namen eines Cmdlet-Parameters angeben. Sie müssen nur so viele Zeichen des Namens eingeben, dass dieser eindeutig von den anderen Parametern unterschieden werden kann, die von dem Cmdlet unterstützt werden. In diesen Beispielen werden drei Methoden veranschaulicht, um den Invoke-Sqlcmd -QueryTimeout-Parameter anzugeben:

Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTime 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryT 3