Wer Mirroring (Deutsch: Datenbankspiegelung) vom SQL Server kennt, wird sich vielleicht schon gefragt haben, warum das nicht in Fabric geht? Inzwischen ist das möglich. Wenn auch immer noch in der Preview Version. Dazu gibt es ein paar Dinge als Voraussetzung zu erfüllen. Darauf gehe ich hier ein und zeige einmal wie es erfolgreich von einer Azure SQL-Datenbank nach Microsoft Fabric geht.
Übrigens weist Microsoft darauf hin, dass Mirroring im SQL Server nicht das Selbe ist wie in Fabric. Mirroring im SQL Server soll sogar in den nächsten Versionen vom SQL Server verschwinden (siehe hier).
Was ist eigentlich Mirroring?
Mirroring ist eine Technik, mit der ich Tabellen aus einer Datenbank spiegeln kann. Ich kann also angeben ich möchte eine Tabelle aus einer Quelle haben und auf einer anderen Datenbank (Zieldatenbank) soll es diese Tabelle auch geben. Im Hintergrund sorgt das Mirroring dafür, dass diese immer den gleichen Inhalt hat. Das ist natürlich praktisch, wenn ich in Fabric bin. Ich muss dann nicht immer schauen, dass ich zum richtigen Zeitpunkt Daten aus einer Quelle abhole. Sie sind dann einfach schon da (frei nach Hase & Igel: „Ich bin schon da“). Ich brauche daher kein „Copy Data Task“ oder etwas Ähnliches.
Und wie geht Mirroring nach Microsoft Fabric?
Microsoft hat dazu eine kurze Beschreibung mit Video zur Verfügung gestellt. Allerdings ist die Beschreibung an der ein oder anderen Stelle etwas verwirrend. Ich werde es besser machen….
Für ein Beispiel habe ich eine Azure SQL Datenbank angelegt. Beim Anlegen habe ich die Beispieldatenbank mit einrichten lassen. So habe ich etwas für mein Beispiel zur Hand.
Voraussetzungen
Zunächst gibt es ein paar Dinge, die vorher gemacht werden müssen, damit ich Mirroring in Microsoft Fabric verwenden kann:
- Zunächst muss ich Mirroring auf dem Tenant einschalten. Das geht wie immer über das Verwaltungsportal in Fabric.
- Der letzte Haken gibt einen Hinweis darauf, dass dies auf der Ebene einer Kapazität angepasst werden kann. Das bedeutet, ich kann unter „Delegierte Mandanteinstellungen“ diese Einstellung überschreiben. Ich kann damit für eine einzelne Kapazität die Datenbankspiegelung wieder ausschalten. Das kann ich unter den Einstellungen für die Kapazität machen.
- Damit ich SQL Server Authentifizierung benutzen kann, muss ich das im Azure SQL auf dem Server zulassen. Wichtig: Das ist eine Einstellung auf Datenbankserver-Ebene. Also auf der Instanz und nicht auf der Datenbank. Dort kann ich unter Sicherheit und Identität die folgende Einstellung setzen.
Danach kann ich auch SQL Server Authentifizierung verwenden. Alternativ geht es mit einem Dienstprinzipal (Service Principal). In produktiven Umgebungen würde ich das auch bevorzugen.
Wie lege ich die Datenbankspiegelung an?
Das Anlegen einer gespiegelten Azure SQL Datenbank kann dann unter Neu im Abschnitt Data Warehouse gefunden werden.
Hier muss ich zunächst eine Verbindung anlegen. Fabric muss ja wissen, wo er die Tabelle(n) für die Replikation herbekommen soll. Im nächsten Schritt lege ich dann die Verbindung an.
Wenn alles korrekt angegeben wurde, dann werden die Tabellen angezeigt, die gespiegelt werden können. Das sind alle in der Datenbank. Diese kann ich dann einfach auswählen.
Witzigerweise werden einige Tabellen aus der Beispieldatenbank von Microsoft als nicht spiegelbar angezeigt. Ein Attribut mit Leerzeichen im Namen führt zum Beispiel dazu, dass das Mirroring nicht geht. nvarchar ist ein anderes Beispiel. Das kann er nicht. Die müssen dann in varchar angepasst werden. Wenn ich das nicht mache, dann werden die Attribute, die Probleme bereiten nicht gespiegelt. Ich kann also die Spiegelung nutzen. Mir fehlen dann nur ein paar Spalten.
Ich habe für unser Beispiel die Tabelle SalesLT.Product angepasst. Er zeigt dann in einer Vorschau die Tabelle komplett an. Jetzt nur noch „Verbinden“ und schon kann es losgehen. Im nächsten Schritt fragt er dann nur noch, wo es denn hingehen soll. Er legt damit automatisch eine Datenbank in Fabric an. Dorthin werden alle ausgewählten Tabellen gespiegelt.
Schon fertig.
Natürlich kann ich jetzt auf die replizierte Tabelle in Fabric zugreifen.
Hier ist auch zu erkennen, dass er mir einen festen Namen für die Tabelle vergeben hat. Dem aufmerksamen Leser ist aufgefallen, dass ich den nirgends anpassen konnte. Der wird automatisch vergeben. Das ist natürlich etwas schade. Vielleicht kommt das aber noch, bevor das Feature in die finale Version geht.
Überwachen kann ich den Status auch immer.
Auch kann ich hier einmal schnell in die Replikationseinstellungen gehen und ggfs. eine Tabelle zusätzlich hinzufügen.
Gut zu wissen
Microsoft wirbt mit Zero Cost. Das ist zunächst richtig. Mirroring läuft aber nur, wenn die Fabric Kapazität läuft. Das bedeutet ich kann diese nicht abschalten, wenn ich das Mirroring haben möchte. Wenn ich die Kapazität einmal stoppe, dann stoppt das Mirroring dauerhaft und ich muss es neu „anschieben“. Das kann ich machen, indem ich es stoppe und direkt danach wieder starte. Danach ist wieder alles auf dem aktuellen Stand. Ein dynamisches Ausschalten der Kapazität bei Nichtbenutzung oder zu bestimmten Zeiten ist damit nicht mehr sinnvoll. Zero Cost ist daher Auslegungssache. Natürlich kann ich skalieren, aber eben nicht auf Pause setzen.
Fazit
In Fabric ist der Einsatz von Datenbankspiegelung ideal. Ich kann diverse Quellen anbinden und aus denen direkt die Tabellen abholen. So spare ich mir den ein oder anderen Aufwand. Kein Tabellen anlegen, kein kopieren der Daten in regelmäßigen Abständen etc. Natürlich ist das nur ein kleiner Teil der Entwicklung, aber dieser wird mit Datenbankspiegelung etwas verkürzt. Ich kann aber zum Beispiel die Beladung des Raw-Layers abkürzen, oder direkt in die Bronze-Schicht von meiner Medaillon-Architektur schreiben.
Aktuell können als Quellen nur Azure SQL, Snowflake und Azure Cosmos DB angegeben werden. Da kommt aber noch mehr in Zukunft. Auch ist zukünftig geplant SQL Server On-Premise zu unterstützen. Wir lassen uns überraschen.