Africa Studio - stock.adobe.com
DBATools: Datenbankserver mit der PowerShell steuern
Das PowerShell-Modul DBATools ist ein praktisches Werkzeug, um SQL Server zu verwalten. Wir zeigen, wie Datenbank-Administratoren das Modul verwenden können.
Zur Automatisierung von Microsoft SQL Server mit der PowerShell stehen die beiden Module SQLPS und SQLServer zur Verfügung. Zusätzlich kann das Community-Modul DBATools verwendet werden.
Das Modul verfügt über mehr als 500 Cmdlets. Mit diesen Cmdlets können Daten gesichert, SQL Server verwaltet und Datenbanken überwacht werden. Das Tool richtet sich in erster Linie an Datenbank-Administratoren (DBA), es sind keine Entwicklerkenntnisse notwendig.
Die Installation des Moduls ist über eine PowerShell-Sitzung in Windows, macOS und Linux möglich. Neben Standard-Cmdlets, die Administratoren zur Verwaltung und Überwachung benötigen, gibt es auch Cmdlets, wie Copy-DbaCredential. Dieses kann Benutzerkonten von einem SQL Server auf einen anderen übertragen. Zusätzlich kann hierbei Copy-DBALogin genutzt werden.
DBATools installieren und Cmdlets anzeigen
Um DBATools in der PowerShell zu installieren, wird mindestens Windows 7, besser Windows 10 benötigt. Gleichzeitig kann das Modul auch auf Windows Server 2016/2019 installiert werden. Auch die Integration in der PowerShell 6.x/7.x unter Linux und macOS ist möglich. Die Installation in Windows 10 und Windows Server 2016/2019 erfolgt mit:
Install-Module dbatools
In Windows 7 und Windows Server 2012/2012 R2 erfolgt die Installation mit:
Install-Module dbatools -Scope CurrentUser
Wer Chocolatey nutzt, kann die Installation mit dem folgenden Befehl ausführen:
choco install dbatools
Die Installation kann außerdem offline erfolgen. Dazu lädt man das Modul auf einem Rechner mit Internetverbindung mit dem Cmdlet Save-Module herunter. Alternativ steht die Installationsdatei über die Seite der Entwickler oder in der PowerShell Gallery zur Verfügung.
Nach der Installation sind die Cmdlets des Moduls in der PowerShell eingebunden. Die Cmdlets können zum Beispiel mit dem folgenden Befehl angezeigt werden:
Get-Command -Module dbatools
Die Befehle kann man ebenfalls auf der Entwickler-Webseite studieren. Durch einen Klick auf ein Cmdlet wird die zugehörige Hilfe angezeigt. Generell kann es sinnvoll sein, die Ausführungsrichtlinie in der Powershell abzuändern, damit Skripte in der PowerShell funktionieren. Dazu muss die PowerShell mit administrativen Rechten gestartet werden. Die Richtlinie wird mit folgendem Befehl geändert:
set-executionpolicy remotesigned
Datenbanken mit DBATools testen, sichern und wiederherstellen
Die zahlreichen Cmdlets der DBATool werden mit Get-Command -Module dbatools angezeigt. Neben verschiedenen Tools zur Datenbankverwaltung stehen zahlreiche Cmdlets zur Verfügung, um Einstellungen zu testen. Die letzte Datensicherung kann zum Beispiel mit Test-DbaLastBackup angezeigt werden.
Das Testen des Wiederherstellungsprozesses ist etwas, das regelmäßig durchgeführt werden sollte. Allerdings nehmen nicht alle DBAs solche Tests vor. Dieser Befehl automatisiert den Prozess des Testens und stellt das Backup auf einem entfernten oder lokalen Server wieder her. Zusätzlich zur Wiederherstellung wird eine Konsistenzprüfung der neu wiederhergestellten Datenbank durchgeführt, wodurch die volle Gültigkeit der Sicherung gewährleistet ist. Alle Test-Cmdlets sind mit dem Befehl Get-Command Test-* einzusehen.
Mit DBATools können auch Datenbanken wiederhergestellt werden. Dazu steht zum Beispiel das Cmdlet Restore-DbaDatabase zur Verfügung. Der Befehl restore-dbadatabase scannt den Ordner und die Header jeder Sicherungsdatei, um ein Wiederherstellungsskript zu erstellen. Hier gibt es zum Beispiel die Möglichkeit, nur die T-SQL-Anweisungen auszugeben, die zur manuellen Ausführung des Wiederherstellungsprozesses erforderlich sind. Um Datenbanken mit DBATools zu sichern, kann man zum Beispiel folgenden Befehl verwenden:
Backup-DbaDatabase -SqlInstance sql1 -Path \\backups\sql1\ -FileCount 8 `
-CompressBackup 'yes' -Verify -Type Full
Der Befehl sichert alle Datenbanken der Instanz und erstellt optional Unterordner für jede Datenbank. Durch diesen Befehl lässt sich schnell und einfach ein kompletter SQL Server mit allen Datenbanken sichern.
SQL Server mit der PowerShell migrieren
Wenn eine Server-Migration durchgeführt wird, können die Befehle des Moduls auch Daten übernehmen. Mit dem Befehl Copy-DBAAgentServer kann man alle Einstellungen und Funktionen des SQL-Server-Agenten übernehmen, einschließlich Aufträge, Benachrichtigungen, Operatoren und Warnungen. Anmeldungen funktionieren auf dieselbe Weise.
Mit Test-DbaWindowsLogin kann in der PowerShell überprüft werden, ob für bestimmte Instanzen die Windows-Authentifizierung funktioniert. Neben der Verwaltung von herkömmlichen Datenbankservern kann das Modul auch SQL-Cluster verwalten. Auf der Seite der Entwickler sind zahlreiche Beispiele und Informationen zur Verwendung des PowerShell-Moduls zu finden.
Generell ist es sinnvoll, die Daten zu Instanzen oder Datenbanken als Variable zu speichern. Danach lassen sich die einzelnen Cmdlets einsetzen, um Aktionen mit dem Server oder der Datenbank vorzunehmen. Natürlich können die Daten auch direkt mit den Cmdlets angegeben werden.
Dbachecks – Datenbanken testen
Wer auf DBATools setzt, sollte sich auch das Framework dbachecks ansehen. Bei dbachecks handelt es sich um ein Framework, das vor allem für die Überprüfung von Datenbanken und Datenbankserver genutzt wird. Dieses Open-Source-Modul ermöglicht es, Checklisten mit Pester-Tests zusammenzufassen.