Dela via


Hantera schema i ett SaaS-program med hjälp av mönstret databas per klientorganisation med Azure SQL Database

Gäller för:Azure SQL Database

När ett databasprogram utvecklas måste ändringar oundvikligen göras i databasschemat eller referensdata. Databasunderhållsuppgifter behövs också regelbundet. Att hantera ett program som använder databasen per klientorganisation kräver att du tillämpar dessa ändringar eller underhållsaktiviteter i en flotta av klientdatabaser.

Den här självstudien utforskar två scenarier – distribuera referensdatauppdateringar för alla klienter och återskapa ett index i tabellen som innehåller referensdata. Funktionen Elastiska jobb används för att utföra dessa åtgärder på alla klientdatabaser och på malldatabasen som används för att skapa nya klientdatabaser.

I den här självstudiekursen får du lära du dig att:

  • Skapa en jobbagent
  • Orsaka att T-SQL-jobb körs på alla klientdatabaser
  • Uppdatera referensdata i alla klientdatabaser
  • Skapar ett index i en tabell i alla klientdatabaser

Se till att följande förhandskrav är slutförda för att kunna slutföra den här guiden:

Introduktion till SaaS-schemahanteringsmönster

Databasen per klientorganisation isolerar klientdata effektivt, men ökar antalet databaser som ska hanteras och underhållas. Elastiska jobb underlättar administration och hantering av flera databaser. Med jobb kan du på ett säkert och tillförlitligt sätt köra uppgifter (T-SQL-skript) mot en grupp databaser. Jobb kan distribuera schema- och vanliga referensdataändringar i alla klientdatabaser i ett program. Elastiska jobb kan också användas för att underhålla en malldatabas som används för att skapa nya klienter, vilket säkerställer att den alltid har de senaste schema- och referensdata.

screen

Offentlig förhandsversion av elastiska jobb

Det finns en ny version av Elastiska jobb som nu är en integrerad funktion i Azure SQL Database. Den här nya versionen av Elastiska jobb finns för närvarande i offentlig förhandsversion. Den här offentliga förhandsversionen stöder för närvarande användning av PowerShell för att skapa en jobbagent och T-SQL för att skapa och hantera jobb. Mer information finns i artikeln om Elastic Database-jobb .

Hämta Wingtip Tickets SaaS-databasen per klientprogramskript

Programmets källkods- och hanteringsskript är tillgängliga i GitHub-lagringsplatsen WingtipTicketsSaaAS-DbPerTenant . Se den allmänna vägledningen för steg för att ladda ned och avblockera Wingtip Tickets SaaS-skript.

Skapa en jobbagentdatabas och ny jobbagent

Den här självstudien kräver att du använder PowerShell för att skapa en jobbagent och dess databas för säkerhetskopieringsjobbagenten. Jobbagentdatabasen innehåller jobbdefinitioner, jobbstatus och historik. När jobbagenten och dess databas har skapats kan du skapa och övervaka jobb omedelbart.

  1. I PowerShell ISE öppnar du ...\Learning Modules\Schema Management\Demo-SchemaManagement.ps1.
  2. Tryck F5 för att köra skriptet.

Skriptet Demo-SchemaManagement.ps1 anropar skriptet Deploy-SchemaManagement.ps1 för att skapa en databas med namnet osagent på katalogservern. Sedan skapas jobbagenten med hjälp av databasen som en parameter.

Skapa ett jobb för att distribuera nya referensdata till alla klienter

I Wingtip Tickets-appen innehåller varje klientdatabas en uppsättning platstyper som stöds. Varje plats är av en specifik platstyp, som definierar vilken typ av händelser som kan hanteras och avgör bakgrundsbilden som används i appen. För att programmet ska kunna stödja nya typer av händelser måste dessa referensdata uppdateras och nya platstyper läggas till. I den här övningen, distribuerar du en uppdatering till alla klientdatabaser för att lägga till två ytterligare platstyper: Motorcycle Racing och Swimming Club.

Granska först de platstyper som ingår i varje klientdatabas. Anslut till en av klientdatabaserna i SQL Server Management Studio (SSMS) och granska tabellen VenueTypes. Du kan också köra frågor mot den här tabellen i frågeredigeraren i Azure-portalen, som nås från databassidan.

  1. Öppna SSMS och anslut till klientservern: tenants1-dpt-user.database.windows.net<>
  2. Om du vill bekräfta att Motorcycle Racing och Swimming Clubför närvarande inte ingår bläddrar du till contosoconcerthall-databasenservern tenants1-dpt-user> och frågar venuetypes-tabellen<.

Nu ska vi skapa ett jobb för att uppdatera tabellen VenueTypes i alla klientdatabaser för att lägga till de nya platstyperna.

Om du vill skapa ett nytt jobb använder du en uppsättning jobbsystem lagrade procedurer som skapades i jobbagentdatabasen när jobbagenten skapades.

  1. I SSMS ansluter du till katalogservern: catalog-dpt-user.database.windows.net>< server
  2. I SSMS öppnar du filen ...\Learning Modules\Schema Management\DeployReferenceData.sql
  3. Ändra instruktionen: SET @wtpUser = <user> och ersätt det användarvärde som användes när du distribuerade Wingtip Tickets SaaS Database Per Tenant-appen
  4. Kontrollera att du är ansluten till jobagentdatabasen och tryck på F5 för att köra skriptet

Observera följande element i skriptet DeployReferenceData.sql :

  • sp_add_target_group skapar målgruppsnamnet DemoServerGroup.
  • sp_add_target_group_member används för att definiera uppsättningen måldatabaser. Först läggs servern tenants1-dpt-user<> till. Om du lägger till servern som ett mål inkluderas databaserna på servern vid tidpunkten för jobbkörningen i jobbet. Sedan läggs databasen basetenantdb och adhocreporting-databasen (som används i en senare självstudie) till som mål.
  • sp_add_job skapar ett jobb med namnet Referensdatadistribution.
  • sp_add_jobstep skapar jobbsteget som innehåller T-SQL-kommandotext för att uppdatera referenstabellen VenueTypes.
  • De återstående vyerna i skriptet visar att jobbet finns och övervakar jobbkörningen. Använd dessa frågor för att granska statusvärdet i livscykelkolumnen för att avgöra när jobbet har slutförts på alla måldatabaser.

När skriptet har slutförts kan du kontrollera att referensdata har uppdaterats. I SSMS bläddrar du till contosoconcerthall-databasenservern tenants1-dpt-user<> och frågar venuetypes-tabellen. Kontrollera att Motorcykel Racing och Swimming Clubär nu närvarande.

Skapa ett jobb för att hantera referenstabellindexet

Den här övningen använder ett jobb för att återskapa indexet på referenstabellens primärnyckel. Det här är en typisk databasunderhållsåtgärd som kan utföras när stora mängder data har lästs in.

Skapa ett jobb med samma jobbs systemlagrade procedurer.

  1. Öppna SSMS och anslut till servern catalog-dpt-user.database.windows.net<>
  2. Öppna filen ...\Learning Modules\Schema Management\OnlineReindex.sql
  3. Högerklicka, välj Anslutning och anslut till servern catalog-dpt-user.database.windows.net<>, om den inte redan är ansluten
  4. Kontrollera att du är ansluten till jobagentdatabasen och tryck på F5 för att köra skriptet

Observera följande element i skriptet OnlineReindex.sql :

  • sp_add_job skapar ett nytt jobb med namnet "Online Reindex PK__VenueTyp__265E44FD7FD4C885"
  • sp_add_jobstep skapar jobbsteget som innehåller T-SQL-kommandotext för att uppdatera indexet
  • Återstående vyer i skriptet övervakar jobbkörningen. Använd dessa frågor för att granska statusvärdet i livscykelkolumnen för att avgöra när jobbet har slutförts för alla målgruppsmedlemmar.

Nästa steg

I den här guiden lärde du dig hur man:

  • Skapa en jobbagent som ska köras över flera T-SQL-jobb i flera databaser
  • Uppdatera referensdata i alla klientdatabaser
  • Skapar ett index i en tabell i alla klientdatabaser

Prova sedan självstudien ad hoc-rapportering för att utforska körning av distribuerade frågor mellan klientdatabaser.

Ytterligare resurser