SQL Server Datenbanken per PowerShell erstellen und löschen

Als Entwickler möchte man immer wiederkehrende Aufgaben möglichst automatisieren um den Aufwand zu minimieren und Fehler zu vermeiden – sind solche Aufgaben dann doch meist auch recht nervig.

Nachfolgendes Script zeigt, wie per PowerShell eine Datenbank eines SQL Servers gelöscht und neu erstellt werden kann. Dabei wird zuvor überprüft, ob die gewünschte Datenbank verfügbar ist und nur in diesem Fall der Löschvorgang angestoßen.

# Recreate database

 

param (

    [string] $server = $(throw Write-Host "You did not define a database server" -ForegroundColor Red),

    [string] $database = $(throw Write-Host "You did not define a database" -ForegroundColor Red)

)

 

Write-Host "Trying to remove database [$database] ..." -ForegroundColor White

 

 trap [Exception] 

 { 

      write-host

      write-error $("TRAPPED: " + $_.Exception.GetType().FullName); 

      write-error $("TRAPPED: " + $_.Exception.Message); 

      break; 

}

 

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")

$serverObj = new-object Microsoft.SqlServer.Management.Smo.Server ($server)

$databaseObj = new-object Microsoft.SqlServer.Management.Smo.Database

 

[Boolean] $databaseExists = 0

foreach ($_ in $serverObj.Databases)

{

    if ($_.Name -eq $database)

    {

        $databaseObj = $_

        $databaseExists = 1

    }

}

 

if ($databaseExists)

{

    Write-Host "Found database [$database] ... removing ..." -ForegroundColor White

    

    $serverObj.KillAllProcesses($databaseObj.Name)

    $serverObj.KillDatabase($databaseObj.Name)

    Write-Host "Database [$database] removed successfully." -ForegroundColor Green

}

 

Write-Host "Trying to create database [$database] ..." -ForegroundColor White

 

$databaseObj = new-object Microsoft.SqlServer.Management.Smo.Database ($serverObj, $database)

$databaseObj.Create()

 

Write-Host "Database [$database] created successfully." -ForegroundColor Green

Dem Script selbst müssen zwei benannte Parameter übergeben werden:

 .\RecreateDatabase.ps1 -server localhost -database myDatabase

Hierbei definiert -server die SQL Server Instanz und -database den Namen der Datenbank, die neu erstellt werden soll.

Der obige Aufruf würde beim ersten Mal folgenden Output generieren:

SQL Server Datenbank per PowerShell erstellen

Der zweite Aufruf ist dann schon spannender:

SQL Server Datenbank per PowerShell löschen und erstellen

Natürlich gibt es noch weitere Möglichkeiten. Einen Überblick der SQL Server Management Objects finden sich im MSDN.

Veröffentlicht von Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.

Beteilige dich an der Unterhaltung

1 Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Cookie-Einstellungen
Auf dieser Website werden Cookie verwendet. Diese werden für den Betrieb der Website benötigt oder helfen uns dabei, die Website zu verbessern.
Alle Cookies zulassen
Auswahl speichern
Individuelle Einstellungen
Individuelle Einstellungen
Dies ist eine Übersicht aller Cookies, die auf der Website verwendet werden. Sie haben die Möglichkeit, individuelle Cookie-Einstellungen vorzunehmen. Geben Sie einzelnen Cookies oder ganzen Gruppen Ihre Einwilligung. Essentielle Cookies lassen sich nicht deaktivieren.
Speichern
Abbrechen
Essenziell (1)
Essenzielle Cookies werden für die grundlegende Funktionalität der Website benötigt.
Cookies anzeigen