SearchNetworking PowerShell-Corner

SQL Server 2008-Administration mit der PowerShell

03.09.2008 | Autor / Redakteur: Markus Widl / Andreas Donner

Neue Cmdlets vom SQL-Server

Die SQL Server-Snap-Ins stellen folgende Cmdlets bereit:

  • encode-sqlname: Wandelt SQL Server-Bezeichner in Zeichenketten um, die vollständig von der PowerShell unterstützt werden
  • decode-sqlname: Gegenstück zu encode-sqlname
  • convert-urntopath: Konvertiert SMO-URN-Zeichenfolgen in PowerShell-Pfade
  • invoke-sqlcmd: Führt T-SQL und XQuery-Anweisungen aus
  • invoke-policyevaluation: Auswertung von Richtlinien

Von diesen Cmdlets wird invoke-sqlcmd wohl in der Praxis am häufigsten zum Einsatz kommen. Hier Beispiele zur Ausführung von T-SQL-Kommandos:

invoke-sqlcmd -query „SELECT GETDATE() AS TimeOfQuery();“
invoke-sqlcmd -database AdventureWorks -query „Insert INTO dbo.Test1 values (1,2,3), (4,5,6)“

Auch der Aufruf einer SQL-Skriptdatei ist möglich:

invoke-sqlcmd -queryfromfile „C:\TestSQL.sql“

Administration mit dem Navigationsparadigma

Ein Großteil der PowerShell-Funktionalität des SQL Servers befindet sich im bereits angesprochenen Provider für das Navigationsparadigma. Dieser stellt die beiden virtuellen Laufwerke SQL: sowie SQLSERVER: bereit. In Letzterem befinden sich, je nach Konfiguration des SQL Servers, folgende virtuellen Ordner:

  • SQL: Zugriff auf die Database Engine, den SQL Server Agent, den Service Broker und Database Mail
  • SQLPolicy: Zugriff auf die Richtlinienverwaltung
  • SQLRegistration: Zugriff auf Registered Server
  • DataCollection: Zugriff auf den Data Collector

Beim Laufwerk SQL: handelt es sich lediglich um eine Abkürzung zum Pfad SQLSERVER:\SQL. Dieser Ordner bietet einen einfachen Zugriff auf Datenbankelemente. Hier ein Beispiel:

cd SQL:
cd COMPUTERNAME (wechselt zum angegebenen SQL Server)
cd DEFAULT (wechselt zur Standardinstanz auf dem Server)
cd Databases
cd AdventureWorks (wechselt zur Datenbank auf der Instanz)
cd Tables
dir (listet alle Tabellen in der Datenbank auf)

Doch nicht nur das Abfragen von Datenbanken ist möglich, sondern auch das Anlegen, Modifizieren und Löschen. Exemplarisch soll eine Datenbank angelegt werden. Zunächst wird ein entsprechendes Objekt instanziiert.

$db = new-object -typename Microsoft.SqlServer.Management.SMO.Database

Dann werden Eigenschaften vergeben. Hier der übergeordnete Knoten („Parent“), sowie der Datenbankname:

$db.Parent = get-item SQL:\COMPUTERNAME\DEFAULT
$db.Name = „Beispieldatenbank“

Zuletzt folgt der Aufruf der Methode Create, womit die Datenbank auch tatsächlich angelegt wird.

$db.Create()

Das Löschen der neuen Datenbank und der anderen Objekte wird durch den Aufruf der Drop-Methode erreicht:

$db.Drop()

Abschließend ein Beispiel, welches alle Datenbanken anzeigt, für die seit 01.08.2008 kein Backup durchgeführt wurde:

dir SQL:\COMPUTERNAME\DEFAULT\Databases | where-object { $_.LastBackupDate -lt [DateTime]“08/01/2008“ }

Alternativ könnte mit der Eigenschaft LastLogBackupDate das Datum der letzten Protokollsicherung abgefragt werden.

Interessierte Leser finden unter der unten angegeben Adresse die Dokumentation zur PowerShell-Erweiterung des SQL Server 2008.

Inhalt des Artikels:

zurück »1 »2 »3

Kommentar zu diesem Artikel

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)



Spamschutz 

Bitte geben Sie das Resultat dieser Rechenaufgabe (Addition) ein:
Kommentar abschicken

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 2015063)