Windows-7- und Windows-8-Clients

Windows Server 2008 R2/2012, Exchange 2010 und SQL Server 2012 remote verwalten

Mit speziellen SQL-Befehlen arbeiten

Alle Eigenschaften für eine Variable, die auf ein SMO-Tabellenobjekt festgelegt ist, zeigen Sie mit folgenden Befehlen an:

$Var = New-Object Microsoft.SqlServer.Management.SMO.Table

$Var | Get-Member -Type Properties

Sie können mehrere Instanzen von SQL Server 2012 auf einem Server installieren. Auf diese Instanzen können Sie auch in der PowerShell zugreifen und zu diesen navigieren wie mit normalen Laufwerken, zum Beispiel mit SQLSERVER:\SQL\<Servername>\<Instanz>.

Jeder Server hat eine Standardinstanz. Sie geben bei der Installation keinen Namen für die Standardinstanz an. In den meisten Fällen ist der Name MSSQLSERVER. Wenn Sie in einer Verbindungszeichenfolge nur einen Computernamen angeben, verbindet Sie die PowerShell mit der Standardinstanz. Alle anderen Instanzen auf dem Server sind benannte Instanzen.

Der SQL-Server-Anbieter implementiert ein Laufwerk mit der Bezeichnung SQLSERVER: Sie können etwa mit dem Ordner SQLSERVER:\SQL Pfade beginnen. Der erste Teil eines SQLSERVER:\SQL-Pfads ist SQLSERVER:\SQL\<Name des Servers>\<Instanz>. Der Pfad zur Vendor-Tabelle im Purchasing-Schema der AdventureWorks2012-Datenbank in einer Standardinstanz auf dem lokalen Server ist zum Beispiel

SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2012\Tables\Purchasing.Vendor

Alle Datenbanken einer Instanz können Sie sich ebenfalls anzeigen lassen. Mit -force zeigt das CMDlet auch die Systemdatenbanken an. Der Vorteil der Anzeige in der PowerShell ist beispielsweise, dass Sie auf einen Blick den Status und die Sortierreihenfolge sowie die eingestellte Sicherungsmethode sehen:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases

Get-ChildItem -force

Nach der Navigation zu einem Knoten können Sie Informationen abrufen oder Verwaltungsaufgaben durchführen. Verwenden Sie das Cmdlet Invoke-Sqlcmd, um Daten in Tabellen und Sichten aus der PowerShell abzufragen oder zu ändern. Mit dem Cmdlet Get-Member zeigen Sie die für Objekte oder Objektklassen verfügbaren Möglichkeiten an. Sie können sich auch die Eigenschaften ausgeben lassen:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases

Get-Item . | Get-Member -Type Properties

In folgendem Beispiel wird zum Knoten AdventureWorks2012 in einem SQLSERVER:-Pfad navigiert, und es werden die Objekteigenschaften angezeigt:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2012

Get-Item . | Get-Member -Type Properties

Um eine Liste der Tabellen aus dem Sales-Schema in AdventureWorks2012 abzurufen, verwenden Sie den folgenden Befehl:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2012\Tables

Get-ChildItem | where {$_.Schema -eq "Sales"}

Sie haben auch die Möglichkeit, T-SQL Befehle in der PowerShell einzugeben, genauso wie bei Abfragen im Managementstudio oder über sqlcmd.exe. Invoke-Sqlcmd ist ein SQL Server-Cmdlet, das Skripts ausführt, die Anweisungen aus den Sprachen (Transact-SQL und XQuery) und Befehlen enthalten können. Ausführliche Hilfen zum Thema finden Sie bei Microsoft. Wollen Sie zum Beispiel eine Abfrage erstellen, verwenden Sie folgende Syntax:

Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "sql\erp"

Nicht alle sqlcmd-Befehle sind in Invoke-Sqlcmd verfügbar. Die nicht unterstützten Befehle sind zum Beispiel: :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :perftrace, und :serverlist. (mje)