Die Kontrolle oder Anpassung der Netzwerkkonfiguration eines Microsoft SQL Servers ist für viele Administrator:innen immer noch ein Grund, sich per RDP auf den Server selbst zu verbinden und dort den SQL Server Configuration Manager zu starten. Aber dazu gibt es seit kurzem eine Alternative, denn ich habe dem PowerShell-Modul dbatools zwei neue Befehle spendiert.
Kleine Übersicht über die grafischen Oberflächen
Da wäre zunächst das SQL Server Management Studio, das sicher hauptsächlich zur Administration verwendet wird. Es ist ein eigenständiges Programm, das auf genau dem Rechner installiert werden kann, von dem aus die Administration durchgeführt werden soll. Selbstverständlich sollte dies nicht der Server selbst sein, sondern ein zentraler Administrationsserver oder der Arbeitsplatzrechner des:der Administrators:in.
Zusätzlich gibt es noch den SQL Server Configuration Manager, dessen Eintrag im Startmenü von Windows man am schnellsten findet, wenn man nach dem roten Werkzeugkoffer Ausschau hält. Es handelt sich hierbei aber gar nicht um ein Programm, sondern lediglich um ein Snap-In für die MMC, die Microsoft Management Console. Genau hier liegt das Problem: Das Snap-In steht eben nur auf dem SQL Server selbst zur Verfügung.
WMI – Windows Management Instrumentation
Der SQL Server Configuration Manager nutzt das Windows Management Instrumentation, kurz WMI, zur Kommunikation mit dem Betriebssystem und damit zur Anzeige und Aktualisierung der Informationen.
Microsoft stellt in der Datei Microsoft.SqlServer.SqlWmiManagement.dll die .NET-Klasse Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer zur Verfügung, die sehr einfach auch innerhalb von PowerShell dazu verwendet werden kann, um die Aufgaben des SQL Server Configuration Managers zu übernehmen. Ich habe dazu hier den notwendigen Code erläutert.
Get-DbaNetworkConfiguration zur Anzeige des aktuellen Zustands
Damit es für die User des PowerShell-Moduls dbatools noch einfacher ist, habe ich dort vor kurzem den Befehl Get-DbaNetworkConfiguration ergänzt, der einen Großteil der im Configuration Manager dargestellten Informationen über die .NET-Klasse ausliest und als PowerShell-Objekt zurückgibt.
Wie auch im Configuration Manager hat die Rückgabe eine geschachtelte Struktur, was die Darstellung aller Informationen nicht immer übersichtlich gestaltet.
Wenn nur Teilinformationen benötigt werden, so kann die Ausgabe des Befehls mit Hilfe des Parameters OutputType angepasst werden. Dabei stehen neben der Voreinstellung Full noch die Optionen ServerProtocols, TcpIpProperties und TcpIpAddresses zur Verfügung.
Die Option ServerProtocols gibt dabei nur für jedes der drei unterstützen Protokolle an, ob es aktiviert (True) oder deaktiviert (False) ist.
Die Option TcpIpProperties liefert die Eigenschaften des TCP/IP-Protokolls zurück. Wichtig ist hierbei insbesondere der Parameter ListenAll. Dieser gibt an, ob der SQL Server auf allen vorhandenen IP-Adressen Verbindungen entgegennimmt oder nur auf einzelnen Adressen. Der Standardwert ist True, dieser sollte auch nur in speziellen Situationen umgestellt werden.
Die Option TcpIpAddresses liefert Informationen zu den verwendeten IP-Adressen. Wenn der TCP/IP-Parameter ListenAll auf dem Standardwert True steht, dann werden hier nur die Informationen für den Eintrag mit dem Namen IPAll angezeigt, da die anderen Einträge nicht aktiv sind.
Set-DbaNetworkConfiguration zur Anpassung der Konfiguration
Zur komfortablen Änderung der Netzwerkkonfiguration steht der Befehl Set-DbaNetworkConfiguration zur Verfügung. Dieser bietet zum einen die Möglichkeit, eine Struktur mit allen Konfigurationseinstellungen entgegenzunehmen, wie sie der Befehl Get-DbaNetworkConfiguration liefert. Dazu möchte ich an dieser Stelle nur auf das Beispiel in der Dokumentation verweisen. Zum anderen stehen die Parameter EnableProtocol und DisableProtocol sowie DynamicPortForIPAll und StaticPortForIPAll zur Verfügung, die ich im Folgenden vorstellen möchte.
Hier wird der Befehl zur Deaktivierung des Shared-Memory-Protokolls dargestellt. Da ich den Parameter RestartService nicht verwendet habe, werde ich durch eine Warnmeldung und zusätzlich durch die Rückgabe darauf hingewiesen, dass ein Neustart erforderlich ist, um die Änderung umzusetzen.
Bei der Umstellung auf einen statischen Port habe ich den Parameter RestartService verwendet, woraufhin der Dienst des SQL Servers neu gestartet wurde und die Änderung damit komplett umgesetzt wurde.
Kleiner Ausblick auf die Steuerung der Dienste
Der SQL Server Configuration Manager wird natürlich nicht nur zur Verwaltung der Netzwerkkonfiguration, sondern vielfach auch zur Verwaltung der verschiedenen Dienste des SQL Servers verwendet. Dazu stehen aber schon seit langem unter anderem diese Befehle zur Verfügung:
Falls etwas fehlt...
Falls Sie noch weitere Funktionalitäten des SQL Server Configuration Managers in den dbatools vermissen, so sprechen Sie uns gerne an. Erstellen Sie dazu entweder ein Feature Request auf GitHub oder schreiben Sie uns einfach eine E-Mail: info@ordix.de
Sie haben Interesse an einer Weiterbildung oder Fragen zum Thema MS SQL Server? Sprechen Sie uns an oder besuchen Sie einen unserer Kurse aus unserem Seminarshop:
Zu unseren SQL-Seminaren