PowerShell & SQL Server – Automatisieren mit T-SQL & .NET
Du arbeitest mit SQL Server und möchtest Routineaufgaben automatisieren? Dann ist PowerShell dein bester Freund. In diesem Beitrag zeige ich dir, wie du mit PowerShell SQL-Daten abfragen, verarbeiten und exportieren kannst – inklusive TSQL, .NET-Zugriff und nützlicher Tipps für Admins, DBAs und freie Softwareentwickler.
Warum PowerShell + SQL?
SQL Server ist robust – aber seine GUI-Tools (wie SSMS) sind oft schwerfällig, besonders bei wiederkehrenden Aufgaben. PowerShell hilft dir:
- regelmäßig Berichte zu ziehen (z. B. Logins, Speicher, Indizes)
- Datenbanken zu sichern oder zu vergleichen
- Skripte gegen mehrere Server auszuführen
- CSVs zu importieren/exportieren
- SQL-Jobs zu überwachen
Und das Beste: Du kannst alles zeitgesteuert oder per Klick im Skript erledigen.
Zugriff auf SQL Server mit PowerShell
Für viele Anwendungsfälle brauchst du keine Zusatzmodule. Die .NET-Klasse System.Data.SqlClient.SqlConnection
reicht völlig:
1# Verbindung aufbauen
2$connectionString = "Server=SQL01;Database=master;Integrated Security=True;"
3$connection = New-Object System.Data.SqlClient.SqlConnection $connectionString
4$connection.Open()
5
6# Abfrage vorbereiten
7$command = $connection.CreateCommand()
8$command.CommandText = "SELECT name FROM sys.databases"
9
10# Ergebnis lesen
11$reader = $command.ExecuteReader()
12while ($reader.Read()) {
13 $reader["name"]
14}
15
16$connection.Close()
Achte auf Leerzeilen vor und nach Codeblöcken – für bessere Lesbarkeit.
Alternativ: SqlServer-Modul verwenden
Für komplexere Szenarien nutzt du das Modul SqlServer
, z. B. mit Invoke-SqlCmd
:
1Install-Module -Name SqlServer -Scope CurrentUser
2
3Invoke-Sqlcmd -ServerInstance "SQL01" -Database "master" -Query "SELECT name FROM sys.databases"
Vorteile:
- vereinfacht die Verbindung
- liefert sofort Objekte
- unterstützt Authentifizierungsoptionen & Variablen
💡 Auch mit Azure SQL oder benutzerdefinierten Ports nutzbar.
Ergebnis exportieren – z. B. als CSV
Gerade für Audits oder Reporting lohnt sich die Weiterverarbeitung:
1Invoke-Sqlcmd -ServerInstance "SQL01" -Database "master" -Query "SELECT name, create_date FROM sys.databases" |
2 Export-Csv -Path "$env:TEMP\datenbanken.csv" -NoTypeInformation -Encoding UTF8
So landen deine SQL-Daten direkt als CSV im Zielverzeichnis – fertig für Excel oder weitere Verarbeitung.
Anwendungsszenarien aus der Praxis
- Backup-Monitoring: SQL-Backups auslesen & in HTML-Report verwandeln
- Benutzerprüfung: Abfrage aller Logins & deren Rechte
- Tägliche Checks: z. B. Datenbankgröße, Recovery-Modus, fehlende Indizes
- DevOps Pipelines: per PowerShell & SQL automatisch Testdaten laden
Gerade in Kombination mit geplanten Tasks oder CI/CD-Tools (z. B. Azure DevOps) ergeben sich endlose Möglichkeiten.
Tipps für robuste Skripte
- nutze Try-Catch zum Abfangen von SQL-Fehlern
- prüfe Verbindungen mit
$connection.State
- arbeite mit
Parameterized Queries
gegen SQL-Injections - setze Timeouts bewusst (CommandTimeout)
- strukturiere deine Skripte modular & kommentiere großzügig
Fazit
PowerShell ist ein extrem hilfreiches Werkzeug zur SQL-Automatisierung – ob für regelmäßige Checks, einmalige Reports oder dynamische Pipelines. Durch den Zugriff via .NET oder Invoke-SqlCmd
bist du maximal flexibel und kannst auch große Umgebungen effizient verwalten.
👉 Mehr Praxis findest du in meinen PowerShell & SQL Seminaren
Noch Fragen oder eigene SQL-Automation im Kopf?
👉 Meld dich gern!