DSC Pullserver mit SQL Server als Datenbank

Ein DSC Pullserver verwendet standardmäßig eine ESENT DB-Datenbank (das „ESE“ steht für Extensible Storage Engine) für das Abspeichern der Konfigurationszustände der einzelnen Nodes. Bei der Umsetzung von DSC wollten es die Entwickler offenbar einfach halten und haben auf eine bewährte Datenbankengine gesetzt, die u.a. von Active Directory und Exchange Server verwendet wird, und die seit Windows XP einfach da ist. Für die Praxis ist eine SQL Server-Datenbank die bessere Option. In erster Linie weil sich dadurch Reporting-Möglichkeiten ergeben, die ansonsten nicht oder nur eingeschränkt zur Verfügung stehen.

Tipp: Ein praktisches kleines Tool für das Betrachten von ESENT DB-Datenbanken ist die ESENT Workbench: https://bitbucket.org/orthoprog/esentworkbench/wiki/Home.

Tipp<: Auf GitHub gibt es einen Managed Essent DB-Provider. Mit seiner Hilfe soll der Zugriff auf eine Datenbank in Managed Code und damit auch per PowerShell sehr einfach einfach: https://github.com/Microsoft/ManagedEsent.

Leider lässt sich eine SQL Server-Datenbank in der aktuellen DSC-Version (Stand: Mai 2018) noch nicht einbinden. Der Grund ist eher trivial. DSC verwendet für den Zugriff auf die ESENT DB-Datenbank benannte Parameter, der für den SQL Server-Zugriff zu verwendende Datenbankprovider versteht diese offenbar nicht und erwartet, dass jeder Parameter durch ein ? repräsentiert wird. Das kann wiederum nur die Jet-Engine von Microsoft Access. Deswegen muss eine Access-Datenbank in Gestalt einer Mdb-Datenbankdatei, die lediglich verknüpfte Tabellen auf die SQL Server-Datenbank enthält, als Vermittler eingeschaltet werden.

Microsoft-Mitarbeiter und PowerShell-Experte Raimund Andrée beschreibt die Hintergründe in einem Blog vom Mai 2017 sehr ausführlich, so dass ich auf seinen Blog verweise, da der alle Fragen beantworten sollte:

https://blogs.technet.microsoft.com/fieldcoding/2017/05/11/using-sql-server-2016-for-a-dsc-pull-server/

Die Vorgehensweise ist, die ESENT-Datenbank Devices.edb durch eine per Microsoft Access erstellte Datenbank mit dem Namen Devices.mdb auszutauschen, deren Tabellen auf die gleichnamigen Tabellen der SQL Server-Datenbank verlinken. Klingt vielleicht umständlich, ist in der Umsetzung aber relativ einfach. Ob es tatsächlich funktioniert ist aber noch ein anderes Thema (Stand 31/05/18 ist es mir nicht gelungen, einen Pull Server mit SQL Server-Datenbanb zu betreiben – die Gründen haber nur indirekt etwas mit DSC zu tun, sondern eher mit der TLS/SSL-Problematik).

Mit Windows Server 2019 soll das Einbeziehen einer SQL Server-Datenbank dann direkt möglich sein:

https://blogs.msdn.microsoft.com/powershell/2018/04/19/windows-pull-server-planning-update-april-2018/
Ob es dieses Update auch für ältere Windows Server-Versionen geben wird ist nicht klar (meine Frage diesbezüglich wurde noch nicht beantwortet)

Ergänzungen aus der Praxis

Das Anlegen einer ODBC-Datenquelle ist aus verschiedenen Gründen nicht ganz so einfach wie es sich in de Anleitung anhört.

>SSL 3.0 kann ein Thema sein. Sollte das Herstellen einer Verbindung hartnäckig an einem Error 18 scheitern, kann das Aktivieren von SSL 3.0 die Lösung sein. Eine praktisches kleines Tool ist IISCrypto.exe (Download unter https://www.nartac.com/Products/IISCrypto/), mit dem sich TLS und SSL sehr einfach aktivieren oder deaktivieren lassen (anschließend ist ein Neustart erforderlich).

Eine Alternative ist der Weg über die lokalen Sicherheitsrichtlinien bzw. Gruppenrichtlinien:

https://dba.stackexchange.com/questions/93127/sql-server-service-won-t-start-after-disabling-tls-1-0-and-ssl-3-0

Man braucht wieder einmal viel Zeit und vor allem Geduld und sehr viel Nachsicht den verantwortlichen DSC-Entwicklern gegenüber.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.