Gestire lo schema in un'applicazione SaaS usando il modello con un database per ogni tenant con il database SQL di Azure

Si applica a: Database SQL di Azure

Quando l'applicazione di database evolve, è necessario apportare modifiche allo schema di database o ai dati di riferimento nonché eseguire periodicamente attività di manutenzione del database. La gestione di un'applicazione che usa il modello con un database per ogni tenant richiede di applicare le modifiche o le attività di manutenzione in una serie di database del tenant.

Questa esercitazione illustra due scenari: distribuzione degli aggiornamenti dei dati di riferimento per tutti i tenant e ricompilazione di un indice per la tabella contenente i dati di riferimento. La funzionalità processi elastici consente di eseguire tali azioni su tutti i database del tenant e sul database modello usato per creare nuovi database tenant.

In questa esercitazione si apprenderà come:

  • Creare un agente processo
  • Eseguire i processi T-SQL in tutti i database tenant
  • Aggiornare i dati di riferimento in tutti i database tenant
  • Creare un indice su una tabella in tutti i database tenant

Per completare questa esercitazione, verificare che siano soddisfatti i prerequisiti seguenti:

Introduzione ai modelli di gestione dello schema SaaS

Il modello con un database per ogni tenant consente di isolare i dati del tenant in modo efficace, ma aumenta il numero di database per cui eseguire gestione e manutenzione. Il servizio Processi elastici facilita l'amministrazione e la gestione di più database. I processi consentono di eseguire in modo sicuro e affidabile attività (script T-SQL) in un gruppo di database. I processi possono anche distribuire modifiche ai dati di riferimento comuni e degli schemi in tutti i database tenant in un'applicazione. Il servizio Processi elastici può essere usato infine per gestire un database modello del database usato per creare nuovi tenant, assicurandosi che disponga sempre dello schema e dei dati di riferimento più recenti.

schermata

Anteprima pubblica di Processi elastici

È disponibile una nuova versione del servizio Processi elastici che è ora una funzionalità integrata di database SQL di Azure. Questa nuova versione del servizio Processi elastici è attualmente in anteprima pubblica. Questa anteprima pubblica supporta attualmente l'uso di PowerShell per creare un agente processo e di T-SQL per creare e gestire i processi. Per altre informazioni, vedere l'articolo Processi di database elastico.

Ottenere gli script dell'applicazione del database per tenant SaaS Wingtip Tickets

Gli script di gestione e il codice sorgente sono disponibili nel repository WingtipTicketsSaaS-DbPerTenant di GitHub. Leggere le linee guida generali per i passaggi da seguire per scaricare e sbloccare gli script dell'app SaaS Wingtip Tickets.

Creare un database dell'agente processo e un nuovo agente processo

Questa esercitazione richiede l'uso di PowerShell per creare un agente processo e il relativo database di backup. Il database dell'agente processo contiene le definizioni e lo stato del processo e la cronologia. Dopo la creazione dell'agente processo e del relativo database, è possibile creare e monitorare i processi immediatamente.

  1. In PowerShell ISE aprire ...\Learning Modules\Schema Management\Demo-SchemaManagement.ps1.
  2. Premere F5 per eseguire lo script.

Lo script Demo-SchemaManagement.ps1 chiama lo script Deploy-SchemaManagement.ps1 per creare un database denominato osagent nel server di catalogo. Crea quindi l'agente di processo, usando il database come parametro.

Creare un processo per distribuire nuovi dati di riferimento a tutti i tenant

Nell'app Wingtip Tickets ogni database tenant include un set di tipi di sedi supportati. Ogni sede è di un tipo specifico, che definisce il tipo di eventi che possono essere ospitati e determina l'immagine di sfondo usata nell'app. Per fare in modo che l'applicazione supporti nuovi tipi di eventi, è necessario aggiornare i dati di riferimento e aggiungere nuovi tipi di sede. Questo esercizio illustra come distribuire un aggiornamento a tutti i database tenant per aggiungere due tipi di eventi aggiuntivi: Motorcycle Racing (Gare motociclistiche) e Swimming Club (Club nuoto).

Esaminare prima i tipi di sede inclusi in ogni database tenant. Connettersi a uno dei database tenant in SQL Server Management Studio (SSMS) ed esaminare la tabella VenueTypes. È anche possibile eseguire query su questa tabella nell'editor di query nel portale di Azure, accessibile dalla pagina di database.

  1. Aprire SSMS e connettersi al server del tenant tenants1-dpt-<user>.database.windows.net
  2. Per verificare che Motorcycle Racing e Swimming Club non siano attualmente inclusi, passare al database contosoconcerthall nel server tenants1-dpt-<utente> ed eseguire una query sulla tabella VenueTypes.

L'esercizio prevede ora la creazione di un processo per aggiornare la tabella VenueTypes in tutti i database tenant per aggiungere i nuovi tipi di sede.

Per creare un nuovo processo, usare un set di stored procedure di sistema per i processi creato nel database jobagent al momento della creazione dell'agente processo.

  1. In SSMS connettersi al server di catalogo catalog-dpt-<user>.database.windows.net nel server
  2. In SSMS aprire il file ...\Learning Modules\Schema Management\DeployReferenceData.sql
  3. Modificare l'istruzione: SET @wtpUser = <utente> e sostituire il valore Utente usato per la distribuzione dell'app del database per tenant SaaS Wingtip Tickets
  4. Verificare di essere connessi al database jobagent e premere F5 per eseguire lo script

Esaminare gli elementi seguenti nello script DeployReferenceData.sql:

  • sp_add_target_group crea il nome del gruppo di destinazione DemoServerGroup.
  • sp_add_target_group_member viene usato per definire il set di database di destinazione. Inizialmente viene aggiunto il server tenants1-dpt-<user>. Se si aggiunge il server come destinazione, al momento dell'esecuzione del processo i database in tale server vengono inclusi nel processo stesso. A questo punto i database basetenantdb e adhocreporting (usato in un'esercitazione successiva) vengono aggiunti come destinazione.
  • sp_add_job crea un processo denominato Distribuzione dati di riferimento.
  • sp_add_jobstep crea il passaggio del processo contenente il testo del comando T-SQL per aggiornare la tabella di riferimento VenueTypes.
  • Le restanti viste nello script consentono di confermare l'esistenza degli oggetti e gestire il monitoraggio dell'esecuzione del processo. Usare queste query per esaminare il valore di stato nella colonna lifecycle per determinare il momento in cui l'esecuzione del processo termina in tutti i database di destinazione.

Dopo il completamento dello script, è possibile verificare se i dati di riferimento sono stati aggiornati. In SSMS passare al database contosoconcerthall nel server tenants1-dpt-<user> ed eseguire una query sulla tabella VenueTypes. Verificare che Motorcycle Racing e Swimming Clubsiano attualmente presenti.

Creare un processo per gestire l'indice della tabella di riferimento

Questo esercizio usa un processo per ricompilare l'indice sulla chiave primaria della tabella di riferimento. Si tratta di un'operazione di manutenzione di database tipica che può essere eseguita dopo il caricamento di grandi quantità di dati.

Creare un processo usando le stesse stored procedure di sistema per i processi.

  1. Aprire SSMS e connettersi al server catalog-dpt-<user>.database.windows.net
  2. Aprire il file ...\Learning Modules\Schema Management\OnlineReindex.sql
  3. Fare clic con il pulsante destro del mouse, scegliere Connessione e quindi connettersi al server catalog-dpt-<user>.database.windows.net, se non si è già connessi
  4. Verificare di essere connessi al database jobagent e premere F5 per eseguire lo script

Esaminare gli elementi seguenti nello script OnlineReindex.sql:

  • sp_add_job crea un nuovo processo denominato "Online Reindex PK__VenueTyp__265E44FD7FD4C885"
  • sp_add_jobstep crea il passaggio del processo contenente il testo del comando T-SQL per aggiornare l'indice
  • Le viste rimaste nello script monitorano l'esecuzione del processo. Usare queste query per esaminare il valore di stato nella colonna lifecycle per determinare quando il processo viene completato su tutti i membri del gruppo di destinazione.

Passaggi successivi

In questa esercitazione si è appreso come:

  • Creare un processo agente per eseguire processi T-SQL in più database
  • Aggiornare i dati di riferimento in tutti i database tenant
  • Creare un indice su una tabella in tutti i database tenant

Provare quindi a eseguire l'esercitazione sul reporting ad hoc per esaminare l'esecuzione di query distribuite tra database tenant.

Risorse aggiuntive