Anwendungsfälle sind z.B. Objektstapelimporte oder Compilerläufe.
Hiermit können dann die betroffenen Datenbanken für die jeweilig anstehenden Stapelverarbeitungen schnell zusammengestellt werden.
So sieht die Datenbankliste fĂĽr den im Beispiel verwendeten Server bei mir lokal aus:
Die Systemdatenbanken und einige andere "Spielwiesen" sollen dabei ĂĽbergangen werden, damit nur die relevanten Datenbanknamen berĂĽcksichtigt werden.
In der Powershell wechselt man in den Ordner, der nach AusfĂĽhrung die Dateinamen enthalten soll, und ruft dann die Funktion mitsamt dem Servernamen auf.
Der Servername wird dabei in die automatische $args-Variable ĂĽbergeben.
Accepting Arguments for PowerShell Functions: Best Practices
In der Beispielfunktion werden die Datenbanknamen ĂĽber
- Code: Alles auswählen
$filename.StartsWith('NAV'))
gefiltert, hier kann man nach Bedarf die eigenen Filter anwenden.
Andere Möglichkeiten an dieser Stelle wären z.B.
- $filename.Substring
- $filename.Contains
- $filename.EndsWith
Ausgabe zur Laufzeit, angezeigt werden alle Datenbanknamen, als Datei angelegt werden nur die gefilterten, hier alle die mit "NAV" beginnen.
Ausschnitt aus den durch die Funktion angelegten Dateien im aktuellen Ordner.
Funktionscode
- Code: Alles auswählen
function ExtractNAVDatabaseNames
{
#Connect and run a command using SMO
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
# $args = Servername
$sqlServer = new-object ("Microsoft.SqlServer.Management.Smo.Server") $args
foreach($sqlDatabase in $sqlServer.databases)
{
$sqlDatabase.name
$filename = $sqlDatabase.name.ToString()
# use own filtering here
if ($filename.StartsWith('NAV'))
{New-Item $filename -type file -force}
}
}