AX7 – Datenbanksynchronisierung ohne Visual Studio

Vor einiger Zeit berichtete ich darüber, wie man im neuen Microsoft Dynamics AX von Visual Studio aus eine Datenbanksynchronisierung ausführen kann. Offenkundig beschränkt sich das auf Entwicklungsumgebungen. Im Folgenden zeige ich einen Weg auf, der ohne VS auskommt – vermutlich wird das im Fall von deployten Umgebungen früher oder später mal notwendig sein.

Ausführbereites PowerShell-Script

Ich schätze, dass man in der Situation, dass man eine Synchronisierung ausführen muss, bereits mit einem Deployable Package agiert hat – eben um eine eigene Lösung einzuspielen. Das ist gut, weil die Ausführung des Workbook ganz offensichtlich auch eine Datenbanksynchronisierung vornimmt. Natürlich muss man das auch gar nicht noch mal extra machen, wenn alles geklappt hat und super funktioniert. Ich zum Beispiel hatte hier den Anwendungsfall, dass ich ein Standard-basierendes Datenbank-Backup in eine bereits erweiterte Umgebung einspielen musste und entsprechend ein DB-Sync ausreichte, um die Erweiterungstabellen zurückzuerhalten (anstatt die ganze Solution noch mal zu deployen). Wo also befindet sich das Script und wie lässt es sich aufrufen? Beim Blick ins Runbook findet man ein PowerShell-Script AutoDeployReportAndSyncDB.ps1, in dem sich der Aufruf von AutoDBSync.ps1 befindet, das für eine vollständige Synchronisierung verwendet werden kann. Es befindet sich im Unterverzeichnis \AOSService\Scripts des Deployable Package. Denke daran, beim Aufruf PowerShell als Administrator auszuführen 🙂

Datenbanksynchronisierung ohne Visual Studio

Microsoft.Dynamics.AX.Deployment.Setup.exe

Die ausführbare Datei, die wiederum vom Script ausgeführt wird, um die Synchronisierung auszuführen, kann natürlich auch direkt aufgerufen, wenn man z. B. kein Deployable Package zur Verfügung hat. Es handelt sich um eine Datei namens Microsoft.Dynamics.AX.Deployment.Setup.exe. Sie befindet sich in I:\AosService\WebRoot\bin\ (nach Azure deployte VM) bzw. C:\Packages\bin\ (bei lokalen virtuellen Maschinen). Momentan kann ich nur von den Parametern und Werten berichten, die vom Script verwendet werden – entsprechend könnte die Syntax unvollständig sein und ich kann auch nichts zu abweichenden Verwendungszwecken als „vollständige Datenbanksynchronisierung“ berichten.

I:\AosService\WebRoot\bin\Microsoft.Dynamics.AX.Deployment.Setup.exe -bindir "I:\AosService\PackagesLocalDirectory" -metadatadir "I:\AosService\PackagesLocalDirectory" -sqluser "axdbadmin" -sqlserver "Demo-00000000" -sql database "AxDB" -setupmode "sync" -syncmode "fullall" -isazuresql "true"

Das ist ein vollständiges Beispiel für den Aufruf in einer Azure-Maschine. Man dabei mindestens muss den Parameter für die Adresse des SQL Server anpassen. Bitte prüfe auch Datenbankname und -Benutzer. Was die Verzeichnisangaben angeht, möchte ich darauf hinweisen, dass diese im Moment passen müssten, sich so etwas aber natürlich von Release zu Release auch ändern kann.
Bei lokalen VMs könnte der Aufruf wie folgt aussehen:

C:\CustomerServiceUnit\Dobind\Packages\Cloud\AosWebApplication\AosWebApplication.csx\roles\AosWeb\approot\bin\Microsoft.Dynamics.AX.Deployment.Setup.exe -bindir "C:\Packages" metadatadir "C:\Packages" -sqluser "AOSUser" -sqlserver "." -sqldatabase "AxDBRAIN" -setupmode "sync" -syncmode "fullall" -isazuresql "false"

Wie man erkennen kann, gibt es die Datei Microsoft.Dynamics.AX.Deployment.Setup.exe auch noch in einem anderen Verzeichnis.

PS: Falls du dich über den Parameter isazuresql wundern solltest – das geht mir auch so. Der Grund dafür ist, dass m. W. (und so wie ich das sehen kann) auch Azure-VMs aktuell noch mit einem lokal installierten SQL Server arbeiten. Ich kann also nur vermuten, dass dies in Zukunft dann auch einen echten Unterschied macht.

Schreibe einen Kommentar