Szenario / Hintergrund
Im Azure Portal kann der Sync Agent registriert werden. Anschließend kann die Synchronisierungs-Richtung ausgewählt werden, sowie die Tabellen und Spalten definiert werden, die abgeglichen werden sollen.
In der On-Premise Datenbank werden während der Konfiguration SQL Objekte angelegt, die für die Synchronisation benötigt werden (Konfiguration, Sync-Status, etc.). Auf der Azure-Seite kann bei der Einrichtung eine „Sync Metadata Database“ angelegt werden. Microsoft empfiehlt hierfür eine eigene Datenbank.
Was es zu beachten gibt
Es gibt bei der Einrichtung ein paar wichtige Dinge zu beachten, da in bestimmten Fällen sonst die Konfiguration nur durch den Microsoft Support korrigiert werden kann.
1. Für die erwähnte Sync Metadata Database gibt es die Einschränkung, dass es diese nur einmal pro Azure Region geben kann [2]. Wenn es in einem Azure Projekt mehrere Umgebungen (z.B. Dev, Test, Prod) gibt, sind diese typischerweise eher in der gleichen Region. Es muss also für alle Umgebungen dieselbe Sync Metadata Database verwendet werden, da sonst die SQL Sync in Azure nicht eingerichtet werden kann (On-Prem Agent kann in Azure nicht ausgewählt werden).
2. Falls die Konfiguration bereits mit mehreren Sync Metadata Datenbanken erstellt wurde und diese nun bereinigt werden sollen, ist es wichtig zuerst alle Agent-Registrierungen und Sync Groups zu entfernen. Die Agent-Registrierungen werden in der Sync Metadata Database verwaltet und wenn diese Datenbank ohne die genannte Vorbereitungen gelöscht wird, kann dies nicht mehr über die Azure Oberfläche bereinigt werden. Die Folge davon ist, dass bei der Anlage einer neuen Sync Group das Feld für die Sync Metadata Database ausgegraut ist. Diesen Zustand kann nur durch den Microsoft Support bereinigt werden.
3. Bei der Initialen Einrichtung werden die SQL Tabellen in Azure automatisch von der On-Premise Datenbankdefinition übernommen. Änderungen an der On-Premise Tabellen-Definition (z.B. neue Spalte) werden nicht automatisch synchronisiert, sondern müssen manuell in Azure nachgezogen werden.
4. In der On-Premise Datenbank werden einige neue SQL Objekte angelegt. Obwohl für alle Objekte eigene SQL Schemas verwendet werden, ist dies ist besonders bei Third-Party Datenbanken nicht immer gewünscht. Das Problem kann für die unidirektionale Synchronisierung von On-Premise nach Azure z.B. dadurch umgangen werden, indem die Daten in eine eigene Datenbank repliziert werden und mit dieser zusätzlichen Datenbank dann die Synchronisierung mit der Azure SQL Database durchgeführt wird.
-------------
[1] https://docs.microsoft.com/en-us/azure/sql-database/sql-database-sync-data
[2] https://docs.microsoft.com/en-us/azure/sql-database/sql-database-get-started-sql-data-sync