bluebay2014 - stock.adobe.com
SQL Server in Windows und Linux über die PowerShell steuern
Microsoft SQL Server lässt sich auch mit der PowerShell konfigurieren und verwalten. Das funktioniert unter Windows, aber als auch Linux und macOS.
Um Microsoft SQL Server mit der PowerShell zu verwalten, wird das SqlServer-Modul der PowerShell benötigt. Dieses muss auf zuvor auf den entsprechenden Rechnern installiert werden.
Mit der PowerShell lassen sich auf diesem Weg lokale SQL Server verwalten, aber auch SQL-Datenbanken in Microsoft Azure.
Mit dem Modul lassen sich außerdem SQL Server managen, die auf Linux-Servern und unter macOS installiert sind. Damit können Administratoren auch über verschiedene Systeme hinweg ihre Datenbankserver verwalten.
Neues SqlServer-Modul nutzen
Bisher wurde SQL Server mit dem Modul SQLPS verwaltet. Dieses wird allerdings nicht mehr weiterentwickelt. Aus diesem Grund sollte das neue Modul SqlServer verwendet werden. Dieses verfügt über alle neuen Funktionen und bietet auch alle Cmdlets, die in SQLPS enthalten waren.
Darüber hinaus kann das neue Modul auch in der PowerShell Core und der PowerShell 7 eingebunden werden, was ebenfalls auf Rechnern mit macOS und Linux möglich ist. Die Befehle zur Installation sind identisch. Das gilt ebenfalls für die Cmdlets, die das Modul zur Verfügung stellt.
Damit man das PowerShell-Modul für die Verwaltung von SQL Servern verwenden kann, muss es in der PowerShell erst installiert werden. Dazu wird auf dem Rechner, mit dem auf SQL Server per PowerShell zugegriffen werden soll, das Modul aus dem PowerShell-Katalog heruntergeladen und installiert:
Install-Module -Name SqlServer
Nachdem die Installation bestätigt wurde, beginnt der Download und das Modul wird in der PowerShell integriert. Wenn das Modul installiert ist und eine neue Version zur Verfügung steht, lässt sich diese direkt mit der PowerShell herunterladen und installieren:
Update-Module -Name SqlServer
Soll das Tool mangels Administratorrechte nur für den aktuellen Benutzer zur Verfügung stehen, wird folgender Befehl eingegeben:
Install-Module -Name SqlServer -Scope CurrentUser
Um sich die installierte Version des Moduls anzuzeigen, verwendet man folgenden Befehl:
Get-Module SqlServer -ListAvailable
Alle verfügbaren CMDlets des Moduls werden mit dem folgenden Befehl angezeigt:
get-command -modul Sqlserver
Verbindungsaufbau und Erstellen von Datenbanken
Um eine Verbindung zum Datenbankserver aufzubauen und eine Datenbank zu erstellen, lassen sich die notwendigen Daten zur Verbindung in Variablen speichern und auf Basis der Variablen anschließend zum Erstellen einer Datenbank nutzen. Hier ein Beispiel:
$server = new-object Microsoft.SqlServer.Management.Smo.Server("w2k19-file1.joos.int")
$database = new-object Microsoft.SqlServer.Management.Smo.Database ($server, "EinkaufDB")
$database.Create()
Das PowerShell-Modul stellt auch ein PowerShell-Laufwerk zur Verfügung, mit dem die Befehle einfacher aufgerufen werden können. Das Laufwerk wird mit cd sqlserver: aufgerufen. Danach lassen sich Instanzen und Datenbanken verwalten. In diesem virtuellen PowerShell-Verzeichnis kann genauso gewechselt werden wie in herkömmlichen Laufwerken. Mit dir werden der Inhalt und die Möglichkeiten für den Zugriff angezeigt.
Mit der PowerShell für SQL Server arbeiten
Die CMDlets unterstützen auch Pipes. Damit lassen sich die Ergebnisse eines Cmdlets an ein anderes Cmdlet weiterleiten. Das ermöglicht zum Beispiel über das Netzwerk einen Verbindungsaufbau zu einem SQL-Server und kann die Datenbanken auf dem Server auslesen. Der folgende Befehl baut eine Verbindung zum Server auf und zeigt die installierte Version des SQL Servers an:
get-sqlinstance -ServerInstance "w2k19-file1.joos.int"
Sollen auch die Datenbanken angezeigt werden, kann man das Ergebnis des Cmdlets an das Cmdlet Get-SqlDatabase weiterleiten:
get-sqlinstance -ServerInstance "w2k19-file1.joos.int" | get-sqldatabase
Mit der PowerShell lassen sich lokale SQL-Instanzen verwalten, aber auch Server im Netzwerk. Über die PowerShell kann man Datenbanken und Server abfragen und verwalten. Wer sich etwas damit auseinandersetzt, kann auch auf Tabellen zugreifen und Daten auslesen oder Tabellen bearbeiten. Auch die Berechtigungen lassen sich steuern. Dazu steht das Cmdlet Add-RoleMember zur Verfügung. Alle Cmdlets und deren Funktionen werden in der Dokumentation des Moduls beschrieben.
Bevor Änderungen vorgenommen werden, ist es sinnvoll, eine Datenbank oder deren Objekte zu sichern. Dazu steht das Cmdlet Backup-SqlDatabase zur Verfügung:
Backup-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB"
oder
Backup-SqlDatabase -ServerInstance "W2k19-File1" -Database "TestDB"
Die Sicherung wird auf dem Server in dem Standard-Verzeichnis gespeichert, das für die Datensicherung angelegt wurde. Die Sicherung kann natürlich über eine Freigabe im Netzwerk gespeichert werden:
Backup-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB" -BackupFile \\mainserver\databasebackup\MainDB.bak
Fazit
In der PowerShell lassen sich Informationen auslesen, Datenbankserver, Instanzen und Datenbanken verwalten, aber auch Tabellen, Indizes und Daten pflegen. Die PowerShell bietet für Datenbanknutzer einen Mehrwert, genauso wie für Administratoren und Entwickler.
Die Dokumentation ist umfassend und auf den Datenbankservern muss nichts installiert werden. Das PowerShell-Modul lässt sich von Windows 10, aber auch von anderen Servern im Netzwerk aus verwenden. Die Syntax ist relativ einfach, gut dokumentiert und es lassen sich auch SQL-Befehle in der PowerShell über das Netzwerk senden.