Gerenciar esquema em um aplicativo SaaS usando o padrão de banco de dados por locatário com o Banco de Dados SQL do Azure

Aplica-se a:Banco de Dados SQL do Azure

À medida que um aplicativo de banco de dados evolui, alterações inevitavelmente precisam ser feitas no esquema do banco de dados ou nos dados de referência. As tarefas de manutenção do banco de dados também são necessárias periodicamente. O gerenciamento de um aplicativo que usa o padrão de banco de dados por locatário requer que você aplique essas alterações ou tarefas de manutenção em uma frota de bancos de dados de locatário.

Este tutorial explora dois cenários: implantar atualizações de dados de referência para todos os locatários e reconstruir um índice na tabela que contém os dados de referência. O recurso Trabalhos elásticos é usado para executar essas ações em todos os bancos de dados de locatários e no banco de dados de modelo usado para criar novos bancos de dados de locatário.

Neste tutorial, ficará a saber como:

  • Criar um agente de emprego
  • Fazer com que trabalhos T-SQL sejam executados em todos os bancos de dados de locatários
  • Atualizar dados de referência em todos os bancos de dados de locatários
  • Criar um índice numa tabela em todas as bases de dados de inquilinos

Para concluir este tutorial, devem ser cumpridos os seguintes pré-requisitos:

Introdução aos padrões de gerenciamento de esquema SaaS

O padrão de banco de dados por locatário isola os dados do locatário de forma eficaz, mas aumenta o número de bancos de dados a serem gerenciados e mantidos. O Elastic Jobs facilita a administração e o gerenciamento de vários bancos de dados. Os trabalhos permitem que você execute tarefas (scripts T-SQL) de forma segura e confiável em um grupo de bancos de dados. Os trabalhos podem implantar alterações de esquema e dados de referência comuns em todos os bancos de dados de locatários em um aplicativo. Os Trabalhos Elásticos também podem ser usados para manter um banco de dados de modelo usado para criar novos locatários, garantindo que ele sempre tenha o esquema e os dados de referência mais recentes.

screen

Pré-visualização pública do Elastic Jobs

Há uma nova versão do Elastic Jobs que agora é um recurso integrado do Banco de Dados SQL do Azure. Esta nova versão do Elastic Jobs está atualmente em pré-visualização pública. Atualmente, essa visualização pública oferece suporte ao uso do PowerShell para criar um agente de trabalho e do T-SQL para criar e gerenciar trabalhos. Consulte o artigo sobre Trabalhos de banco de dados elástico para obter mais informações.

Obter o banco de dados SaaS de tíquetes Wingtip por scripts de aplicativo de locatário

O código-fonte do aplicativo e os scripts de gerenciamento estão disponíveis no repositório GitHub WingtipTicketsSaaS-DbPerTenant . Confira as orientações gerais para conhecer as etapas para baixar e desbloquear os scripts SaaS do Wingtip Tickets.

Criar um banco de dados de agente de trabalho e um novo agente de trabalho

Este tutorial requer que você use o PowerShell para criar um agente de trabalho e seu banco de dados de agente de trabalho de suporte. O banco de dados do agente de trabalho contém definições de trabalho, status de trabalho e histórico. Uma vez que o agente de trabalho e seu banco de dados são criados, você pode criar e monitorar trabalhos imediatamente.

  1. No ISE do PowerShell, abra ...\Learning Modules\Schema Management\Demo-SchemaManagement.ps1.
  2. Prima F5 para executar o script.

O script Demo-SchemaManagement.ps1 chama o script Deploy-SchemaManagement.ps1 para criar um banco de dados chamado osagent no servidor de catálogo. Em seguida, ele cria o agente de trabalho, usando o banco de dados como parâmetro.

Criar uma tarefa para implementar novos dados de referência para todos os inquilinos

No aplicativo Wingtip Tickets, cada banco de dados de locatários inclui um conjunto de tipos de locais suportados. Cada local é de um tipo de local específico, que define o tipo de eventos que podem ser hospedados e determina a imagem de fundo usada no aplicativo. Para que o aplicativo ofereça suporte a novos tipos de eventos, esses dados de referência devem ser atualizados e novos tipos de local adicionados. Neste exercício, vai implementar uma atualização para todas as bases de dados de inquilinos para adicionar dois tipos de local adicionais: Corrida de Motos e Clube de Natação.

Primeiro, revise os tipos de local incluídos em cada banco de dados de locatário. Conecte-se a um dos bancos de dados de locatário no SQL Server Management Studio (SSMS) e inspecione a tabela VenueTypes. Também pode consultar esta tabela no Editor de consultas no portal do Azure, acedido a partir da página da base de dados.

  1. Abra o SSMS e conecte-se ao servidor locatário: tenants1-dpt-user.database.windows.net<>
  2. Para confirmar que o Motorcycle Racing e o Swimming Clubnão estão incluídos no momento, navegue até o banco de dados contosoconcerthall no servidor tenants1-dpt-user>< e consulte a tabela VenueTypes.

Agora vamos criar um trabalho para atualizar a tabela VenueTypes em todos os bancos de dados de locatários para adicionar os novos tipos de local.

Para criar um novo trabalho, use um conjunto de procedimentos armazenados do sistema de trabalhos criados no banco de dados jobagent quando o agente de trabalho foi criado.

  1. No SSMS, conecte-se ao servidor de catálogo: catalog-dpt-user.database.windows.net>< server
  2. No SSMS, abra o arquivo ...\Learning Modules\Schema Management\DeployReferenceData.sql
  3. Modifique a instrução: SET @wtpUser = <user> e substitua o valor User usado quando você implantou o aplicativo Wingtip Tickets SaaS Database Per Tenant
  4. Verifique se você está conectado ao banco de dados jobagent e pressione F5 para executar o script

Observe os seguintes elementos no script DeployReferenceData.sql :

  • sp_add_target_group cria o nome do grupo de destino DemoServerGroup.
  • sp_add_target_group_member é usado para definir o conjunto de bancos de dados de destino. Primeiro, o servidor tenants1-dpt-user<> é adicionado. Adicionar o servidor como destino faz com que os bancos de dados nesse servidor no momento da execução do trabalho sejam incluídos no trabalho. Em seguida, o banco de dados basetenantdb e o banco de dados adhocreporting (usado em um tutorial posterior) são adicionados como destinos.
  • sp_add_job cria um trabalho chamado Implantação de Dados de Referência.
  • sp_add_jobstep cria a etapa de trabalho que contém o texto do comando T-SQL para atualizar a tabela de referência, VenueTypes.
  • As vistas restantes no script mostram a existência dos objetos e monitorizam a execução da tarefa. Use essas consultas para revisar o valor de status na coluna do ciclo de vida para determinar quando o trabalho foi concluído em todos os bancos de dados de destino.

Quando o script for concluído, você poderá verificar se os dados de referência foram atualizados. No SSMS, navegue até o banco de dados contosoconcerthall no servidor tenants1-dpt-user<> e consulte a tabela VenueTypes. Verifique se o Clube de Corridas de Motociclismo e Nataçãojá está presente.

Criar uma tarefa para gerir o índice de tabela de referência

Este exercício usa um trabalho para reconstruir o índice na chave primária da tabela de referência. Esta é uma operação típica de manutenção de banco de dados que pode ser feita após o carregamento de grandes quantidades de dados.

Crie uma tarefa com os mesmos procedimentos armazenados no “sistema” das tarefas.

  1. Abra o SSMS e conecte-se ao servidor catalog-dpt-user.database.windows.net<>
  2. Abra o arquivo ...\Learning Modules\Schema Management\OnlineReindex.sql
  3. Clique com o botão direito do mouse, selecione Conexão e conecte-se ao servidor catalog-dpt-user.database.windows.net<>, se ainda não estiver conectado
  4. Verifique se você está conectado ao banco de dados jobagent e pressione F5 para executar o script

Observe os seguintes elementos no script OnlineReindex.sql :

  • sp_add_job cria um novo emprego chamado "Online Reindex PK__VenueTyp__265E44FD7FD4C885"
  • sp_add_jobstep cria a etapa de trabalho que contém o texto do comando T-SQL para atualizar o índice
  • Os modos de exibição restantes no script monitoram a execução do trabalho. Use essas consultas para revisar o valor de status na coluna do ciclo de vida para determinar quando o trabalho foi concluído com êxito em todos os membros do grupo-alvo.

Próximos passos

Neste tutorial, ficou a saber como:

  • Criar um agente de trabalho para executar trabalhos T-SQL em vários bancos de dados
  • Atualizar dados de referência em todos os bancos de dados de locatários
  • Criar um índice numa tabela em todas as bases de dados de inquilinos

Em seguida, tente o tutorial de relatórios ad hoc para explorar a execução de consultas distribuídas em bancos de dados de locatário.

Recursos adicionais