Verwalten von Schemas in einer SaaS-Anwendung mit dem Muster für eine Datenbank pro Mandant in Azure SQL-Datenbank

Gilt für:Azure SQL-Datenbank

Wenn eine Datenbankanwendung weiterentwickelt wird, müssen unweigerlich Änderungen am Datenbankschema oder den Verweisdaten vorgenommen werden. Auch Datenbankwartungsaufgaben sind in regelmäßigen Abständen erforderlich. Um eine Anwendung, die das Muster für eine Datenbank pro Mandant verwendet, zu verwalten, müssen Sie diese Änderungen oder Wartungsaufgaben für eine ganze Reihe von Mandantendatenbanken übernehmen.

In diesem Tutorial werden zwei Szenarien erläutert: das Bereitstellen der Aktualisierungen von Verweisdaten für alle Mandanten und das erneute Erstellen eines Index für die Tabelle mit den Verweisdaten. Das Feature Elastische Aufträge wird zum Ausführen dieser Aktionen für alle Mandantendatenbanken sowie für die Vorlagendatenbank verwendet, die zum Erstellen neuer Mandantendatenbanken zur Anwendung kommt.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen eines Auftrags-Agents
  • Umsetzen der Ausführung von T-SQL-Aufträgen für alle Mandantendatenbanken
  • Aktualisieren von Verweisdaten in allen Mandantendatenbanken
  • Erstellen eines Index für eine Tabelle in allen Mandantendatenbanken

Stellen Sie vor dem Durchführen dieses Tutorials sicher, dass die folgenden Voraussetzungen erfüllt sind:

Einführung in SaaS-Schemaverwaltungsmuster

Das Muster für eine Datenbank pro Mandant isoliert Mandantendaten effektiv, erhöht jedoch die Anzahl der Datenbanken, die verwaltet werden müssen. Elastische Aufträge erleichtert die Verwaltung mehrerer Datenbanken. Mithilfe von Aufträgen können Sie auf sichere und zuverlässige Weise Aufgaben (T-SQL-Skripts) für eine Gruppe von Datenbanken ausführen. Aufträge können Änderungen an Schemadaten und gemeinsamen Verweisdaten für alle Mandanten in einer Anwendung bereitstellen. Mit „Elastische Aufträge“ kann auch eine Vorlagendatenbank verwaltet werden, anhand derer neue Mandanten erstellt werden. Dabei wird sichergestellt, dass sie stets die aktuellen Schema- und Verweisdaten aufweist.

Bildschirm

Elastische Aufträge

Im Jahr 2024 wurden elastische Aufträge als allgemein verfügbares Produkt mit neuen Features veröffentlicht. Ein integriertes Feature von Azure SQL-Datenbank finden Sie unter Aufträge für die elastische Datenbank.

Abrufen der Skripts zur SaaS-Anwendung Wingtip Tickets mit einer Datenbank pro Mandant

Der Quellcode der Anwendung und die Verwaltungsskripts sind im GitHub-Repository WingtipTicketsSaaS-DbPerTenant verfügbar. Schritte zum Herunterladen und Entsperren der Wingtip Tickets-SaaS-Skripts finden Sie unter General guidance for working with Wingtip Tickets sample SaaS apps (Allgemeine Hinweise zur Verwendung von Wingtip Tickets-Beispiel-SaaS-Apps).

Erstellen einer Auftrags-Agent-Datenbank und eines neuen Auftrags-Agents

Für dieses Tutorial müssen Sie mit PowerShell den Auftrags-Agent und die unterstützende Auftrags-Agent-Datenbank erstellen. Die Auftrags-Agent-Datenbank enthält Auftragsdefinitionen, den Auftragsstatus und den Verlauf. Wenn der Auftrags-Agent und die zugehörige Datenbank erstellt wurden, können Sie sofort Aufträge erstellen und überwachen.

  1. Öffnen Sie …\Learning Modules\Schema Management\Demo-SchemaManagement.ps1 in der PowerShell ISE.
  2. Drücken Sie F5 , um das Skript auszuführen.

Das Skript Demo-SchemaManagement.ps1 ruft das Skript Deploy-SchemaManagement.ps1 auf, um die Datenbank osagent auf dem Katalogserver zu erstellen. Anschließend erstellt es den Auftrags-Agent mit der Datenbank als Parameter.

Erstellen eines Auftrags, um neue Verweisdaten für alle Mandanten bereitzustellen

In der Wingtip Tickets-App gehört zu jeder Mandantendatenbank ein Satz von unterstützten Veranstaltungsorttypen. Jeder Veranstaltungsort weist einen bestimmten Veranstaltungsorttyp auf, der die Art der möglichen Veranstaltungen definiert und das Hintergrundbild in der App festlegt. Wenn die Anwendung neue Arten von Ereignissen unterstützen soll, müssen diese Verweisdaten aktualisiert und neue Veranstaltungsorttypen hinzugefügt werden. In dieser Übung stellen Sie ein Update für alle Mandantendatenbanken bereit, wobei zwei weitere Veranstaltungsorttypen hinzugefügt werden: Motorcycle Racing und Swimming Club.

Prüfen Sie zunächst die in jeder Mandantendatenbank enthaltenen Veranstaltungsorttypen. Stellen Sie in SQL Server Management Studio (SSMS) eine Verbindung mit einer der Mandantendatenbanken her, und überprüfen Sie die Tabelle VenueTypes. Sie können diese Tabelle auch im Azure-Portal im Abfrage-Editor abfragen, den Sie über die Seite „Datenbank“ aufrufen können.

  1. Öffnen Sie SSMS, und stellen Sie eine Verbindung mit dem Mandantenserver tenants1-dpt-<Benutzer>.database.windows.net her.
  2. Um sich zu vergewissern, dass Motorcycle Racing und Swimming Clubnicht in der Ergebnisliste enthalten sind, navigieren Sie zur Datenbank contosoconcerthall auf dem Server tenants1-dpt-<Benutzer>, und fragen Sie die Tabelle VenueTypes ab.

Nun erstellen Sie einen Auftrag zum Aktualisieren der Tabelle VenueTypes in allen Mandantendatenbanken und fügen die neuen Veranstaltungsorttypen hinzu.

Zum Erstellen eines neuen Auftrags verwenden Sie eine Gruppe von gespeicherten Systemprozeduren für Aufträge, die beim Erstellen des Auftrags-Agents in der Datenbank jobagent erstellt wurden.

  1. Stellen Sie in SSMS eine Verbindung mit dem Katalogserver her: catalog-dpt-<Benutzer>.database.windows.net.
  2. Öffnen Sie in SSMS die Datei …\Learning Modules\Schema Management\DeployReferenceData.sql.
  3. Ändern Sie diese Anweisung: „SET @wtpUser = <Benutzer>“. Ersetzen Sie den Wert „Benutzer“ durch den Benutzer, der beim Bereitstellen der App „Wingtip Tickets SaaS Database Per Tenant“ verwendet wurde.
  4. Stellen Sie sicher, dass Sie mit der Datenbank jobagent verbunden sind, und drücken Sie F5, um das Skript auszuführen.

Beachten Sie die folgenden Elemente im Skript DeployReferenceData.sql:

  • sp_add_target_group erstellt den Zielgruppennamen „DemoServerGroup“.
  • Mithilfe von sp_add_target_group_member wird der Satz von Zieldatenbanken erstellt. Zuerst wird der Server tenants1-dpt-<Benutzer> hinzugefügt. Das Hinzufügen des Servers als Ziel führt dazu, dass die Datenbanken auf diesem Server zum Zeitpunkt der Auftragsausführung in den Auftrag eingeschlossen werden. Die Datenbanken basetenantdb und adhocreporting (in einem späteren Tutorial verwendet) werden als Ziele hinzugefügt.
  • sp_add_job erstellt einen Auftrag mit dem Namen Verweisdatenbereitstellung.
  • sp_add_jobstep erstellt den Auftragsschritt mit dem T-SQL-Befehlstext zum Aktualisieren der Verweistabelle „VenueTypes“.
  • Die übrigen Ansichten im Skript zeigen das Vorhandensein der Objekte an und überwachen die Auftragsausführung. Verwenden Sie diese Abfragen, um den Statuswert in der Spalte lifecycle zu überprüfen und zu ermitteln, wann der Auftrag für alle Zieldatenbanken abgeschlossen wurde.

Nach Abschluss des Skripts können Sie überprüfen, ob die Verweisdaten aktualisiert wurden. Navigieren Sie in SSMS zur Datenbank contosoconcerthall auf dem Server tenants1-dpt-<Benutzer> , und fragen Sie die Tabelle VenueTypes ab. Vergewissern Sie sich, dass Motorcycle Racing und Swimming Club jetzt vorhanden sind.

Erstellen eines Auftrags zum Verwalten des Index der Verweistabelle

In dieser Übung wird ein Auftrag verwendet, um den Index für den Primärschlüssel der Verweistabelle neu zu erstellen. Dies ist ein typischer Datenbank-Wartungsvorgang, der beispielsweise nach dem Laden großer Datenmengen durchgeführt werden kann.

Erstellen Sie einen Auftrag mit den gleichen gespeicherten Systemprozeduren für Aufträge.

  1. Öffnen Sie SSMS, und stellen Sie eine Verbindung mit dem Server catalog-dpt-<Benutzer>.database.windows.net her.
  2. Öffnen Sie die Datei …\Learning Modules\Schema Management\OnlineReindex.sql.
  3. Klicken Sie mit der rechten Maustaste, wählen Sie Verbindung aus, und stellen Sie eine Verbindung mit dem Server catalog-dpt-<Benutzer>.database.windows.net her, sofern dies noch nicht geschehen ist.
  4. Stellen Sie sicher, dass Sie mit der Datenbank jobagent verbunden sind, und drücken Sie F5, um das Skript auszuführen.

Beachten Sie die folgenden Elemente im Skript OnlineReindex.sql:

  • sp_add_job erstellt einen neuen Auftrag mit dem Namen „Online Reindex PK__VenueTyp__265E44FD7FD4C885“
  • sp_add_jobstep erstellt den Auftragsschritt mit dem T-SQL-Befehlstext zum Aktualisieren des Index.
  • Die verbleibenden Ansichten im Skript überwachen die Auftragsausführung. Verwenden Sie diese Abfragen, um den Statuswert in der lifecycle-Spalte zu überprüfen und zu ermitteln, wann der Auftrag für alle Zielgruppenelemente erfolgreich abgeschlossen wurde.

Nächste Schritte

In diesem Tutorial haben Sie Folgendes gelernt:

  • Erstellen eines Auftrags-Agents zum datenbankübergreifenden Ausführen von T-SQL-Aufträgen
  • Aktualisieren von Verweisdaten in allen Mandantendatenbanken
  • Erstellen eines Index für eine Tabelle in allen Mandantendatenbanken

Absolvieren Sie als Nächstes das Tutorial Ad-hoc-Berichterstellung, um das Ausführen verteilter Abfragen über Mandantendatenbanken hinweg zu untersuchen.

Zusätzliche Ressourcen