Správa schématu v aplikaci SaaS pomocí vzoru databáze na tenanta pomocí Azure SQL Database

Platí pro:Azure SQL Database

S tím, jak se databázová aplikace vyvíjí, musí být změny nutně provedeny ve schématu databáze nebo referenčních datech. Úlohy údržby databáze jsou také potřeba pravidelně. Správa aplikace, která používá databázi na model tenanta, vyžaduje, abyste tyto změny nebo úlohy údržby použili napříč vozovým parkem databází tenantů.

Tento kurz zkoumá dva scénáře – nasazení aktualizací referenčních dat pro všechny tenanty a opětovné sestavení indexu v tabulce obsahující referenční data. Funkce elastických úloh slouží ke spouštění těchto akcí u všech databází tenantů a v databázi šablony použité k vytváření nových databází tenantů.

V tomto kurzu se naučíte:

  • Vytvoření agenta úloh
  • Příčina spuštění úloh T-SQL ve všech databázích tenantů
  • Aktualizace referenčních dat ve všech databázích tenantů
  • Vytvořit index tabulky ve všech databázích tenantů

Předpokladem dokončení tohoto kurzu je splnění následujících požadavků:

Úvod do vzorů správy schémat SaaS

Model databáze na tenanta efektivně izoluje data tenanta, ale zvyšuje počet databází pro správu a údržbu. Elastické úlohy usnadňují správu a správu více databází. Úlohy umožňují bezpečně a spolehlivě spouštět úlohy (skripty T-SQL) ve skupině databází. Úlohy můžou nasadit změny schématu a běžných referenčních dat ve všech databázích tenantů v aplikaci. Elastické úlohy je také možné použít k údržbě databáze šablony , která se používá k vytváření nových tenantů a zajišťuje, že vždy obsahuje nejnovější schéma a referenční data.

screen

Elastické úlohy

V roce 2024 byly elastické úlohy vydány jako obecně dostupný produkt s novými funkcemi. Integrovaná funkce Azure SQL Database najdete v úlohách elastické databáze.

Získání databáze SaaS lístků Wingtip na skripty aplikace tenanta

Zdrojový kód aplikace a skripty pro správu jsou k dispozici v úložišti WingtipTicketsSaaSaS-DbPerTenant Na GitHubu. V obecných doprovodných materiálech najdete pokyny ke stažení a odblokování skriptů SaaS pro Wingtip Tickets.

Vytvoření databáze agenta úloh a nového agenta úloh

Tento kurz vyžaduje, abyste pomocí PowerShellu vytvořili agenta úloh a jeho databázi agenta úloh pro zálohování. Databáze agenta úloh obsahuje definice úloh, stav úlohy a historii. Po vytvoření agenta úloh a jeho databáze můžete úlohy okamžitě vytvořit a monitorovat.

  1. V prostředí PowerShell ISE otevřete ...\Učení Modules\Schema Management\Demo-SchemaManagement.ps1.
  2. Stisknutím klávesy F5 spusťte skript.

Skript Demo-SchemaManagement.ps1 volá skript Deploy-SchemaManagement.ps1 pro vytvoření databáze s názvem osagent na serveru katalogu. Potom vytvoří agenta úlohy pomocí databáze jako parametru.

Vytvoření úlohy, která u všech tenantů nasadí nová referenční data

V aplikaci Wingtip Tickets obsahuje každá databáze tenanta sadu podporovaných typů míst. Každé místo je specifického typu místa, které definuje druh událostí, které je možné hostovat, a určuje obrázek pozadí použitý v aplikaci. Aby aplikace podporovala nové druhy událostí, musí být tato referenční data aktualizována a přidány nové typy místa konání. V tomto příkladu nasadíte aktualizaci u všech databází tenantů. Aktualizace přidá dva další typy míst: Motorcycle Racing (Motocyklové závody) a Swimming Club (Plavecký klub).

Nejprve zkontrolujte typy míst, které jsou součástí každé databáze tenanta. Připojení do jedné z klientských databází v aplikaci SQL Server Management Studio (SSMS) a zkontrolujte tabulku VenueTypes. Tuto tabulku můžete dotazovat také v editoru dotazů na webu Azure Portal, ke které se dostanete ze stránky databáze.

  1. Otevřete SSMS a připojte se k serveru tenanta: tenants1-dpt-user.database.windows.net<>
  2. Pokud chcete ověřit, že motocyklové závodní a plavecké kluby nejsou aktuálně zahrnuty, přejděte na databázi contosoconcerthall na serveru tenants1-dpt-user>< a zadejte dotaz na tabulku VenueTypes.

Teď vytvoříme úlohu, která aktualizuje tabulku VenueTypes ve všech databázích tenantů a přidá nové typy míst.

K vytvoření nové úlohy použijete sadu systémových uložených procedur vytvořených v databázi agenta úloh při vytvoření agenta úloh.

  1. V aplikaci SSMS se připojte k serveru katalogu: catalog-dpt-user.database.windows.net>< server
  2. V nástroji SSMS otevřete soubor ...\Učení Modules\Schema Management\DeployReferenceData.sql
  3. Upravte příkaz: SET @wtpUser = <uživatel> a nahraďte hodnotu Uživatele použitou při nasazení aplikace SaaS Database SaaS Tickets Wingtip na tenanta.
  4. Ujistěte se, že jste připojení k databázi jobagent a stisknutím klávesy F5 spusťte skript.

Všimněte si následujících prvků ve skriptu DeployReferenceData.sql :

  • sp_add_target_group vytvoří cílovou skupinu s názvem DemoServerGroup.
  • sp_add_target_group_member slouží k definování sady cílových databází. Nejprve se přidá server tenants1-dpt-user><. Přidání serveru jako cíle způsobí, že databáze v daném serveru v době provádění úlohy budou zahrnuty do úlohy. Databáze basetenantdb a databáze adhocreportingu (použitá v pozdějším kurzu) se přidají jako cíle.
  • sp_add_job vytvoří úlohu s názvem Nasazení referenčních dat.
  • sp_add_jobstep vytvoří krok úlohy obsahující text příkazu T-SQL pro aktualizaci referenční tabulky VenueTypes.
  • Zbývající pohledy ve skriptu zobrazují existující objekty a monitorují provádění úlohy. Pomocí těchto dotazů zkontrolujte hodnotu stavu ve sloupci životního cyklu a určete, kdy úloha skončila ve všech cílových databázích.

Po dokončení skriptu můžete ověřit, že se referenční data aktualizovala. V nástroji SSMS přejděte na databázi contosoconcerthall na serveru tenants1-dpt-user<> a zadejte dotaz na tabulku VenueTypes. Zkontrolujte, zda jsou nyní přítomny motocyklové závodní a plavecké kluby.

Vytvoření úlohy pro správu indexu referenční tabulky

Toto cvičení používá úlohu k opětovnému sestavení indexu v primárním klíči referenční tabulky. Jedná se o typickou operaci údržby databáze, kterou je možné provést po načtení velkých objemů dat.

K vytvoření úlohy použijeme stejné úlohy uložených procedur „system“.

  1. Otevřete SSMS a připojte se k serveru catalog-dpt-user.database.windows.net><.
  2. Otevřete soubor ...\Učení Modules\Schema Management\OnlineReindex.sql
  3. Klikněte pravým tlačítkem, vyberte Připojení ion a připojte se k serveru catalog-dpt-user.database.windows.net<>, pokud ještě není připojený.
  4. Ujistěte se, že jste připojení k databázi jobagent a stisknutím klávesy F5 spusťte skript.

V OnlineReindex.sql skriptu sledujte následující prvky:

  • sp_add_job vytvoří novou úlohu s názvem Online Přeindexovat PK__VenueTyp__265E44FD7FD4C885.
  • sp_add_jobstep vytvoří krok úlohy obsahující text příkazu T-SQL pro aktualizaci indexu.
  • Zbývající zobrazení ve spuštění úlohy monitorování skriptu. Pomocí těchto dotazů zkontrolujte hodnotu stavu ve sloupci životního cyklu a určete, kdy se úloha úspěšně dokončila u všech členů cílové skupiny.

Další kroky

V tomto kurzu jste se naučili:

  • Vytvoření agenta úloh pro spouštění napříč úlohami T-SQL s více databázemi
  • Aktualizace referenčních dat ve všech databázích tenantů
  • Vytvořit index tabulky ve všech databázích tenantů

Dále vyzkoušejte kurz ad hoc generování sestav a prozkoumejte spouštění distribuovaných dotazů napříč databázemi tenantů.

Další materiály