Partilhar via


Gerenciar esquema em um aplicativo SaaS que usa bancos de dados multilocatários fragmentados

Aplica-se a:Banco de Dados SQL do Azure

Este tutorial examina os desafios na manutenção de uma frota de bancos de dados em um aplicativo SaaS (Software as a Service). As soluções são demonstradas para distribuir alterações de esquema em toda a frota de bancos de dados.

Como qualquer aplicativo, o aplicativo SaaS Wingtip Tickets evoluirá ao longo do tempo e exigirá alterações no banco de dados. As alterações podem afetar o esquema ou os dados de referência ou aplicar tarefas de manutenção do banco de dados. Com um aplicativo SaaS usando um banco de dados por padrão de locatário, as alterações devem ser coordenadas em uma frota potencialmente enorme de bancos de dados de locatários. Além disso, você deve incorporar essas alterações no processo de provisionamento de banco de dados para garantir que elas sejam incluídas em novos bancos de dados à medida que são criadas.

Dois cenários

Este tutorial explora os dois cenários a seguir:

  • Implante atualizações de dados de referência para todos os locatários.
  • Recrie um índice na tabela que contém os dados de referência.

O recurso Trabalhos Elásticos do Banco de Dados SQL do Azure é usado para executar essas operações em bancos de dados de locatário. Os trabalhos também operam no banco de dados de locatários 'modelo'. No aplicativo de exemplo Wingtip Tickets, esse banco de dados de modelo é copiado para provisionar um novo banco de dados de locatário.

Neste tutorial, ficará a saber como:

  • Crie um agente de emprego.
  • Execute uma consulta T-SQL em vários bancos de dados de locatário.
  • Atualize os dados de referência em todos os bancos de dados de locatário.
  • Crie um índice em uma tabela em todos os bancos de dados de locatário.

Pré-requisitos

  • O aplicativo de banco de dados multilocatário Wingtip Tickets já deve estar implantado:

    • Para obter instruções, consulte o primeiro tutorial, que apresenta o aplicativo de banco de dados multilocatário Wingtip Tickets SaaS:
      Implante e explore um aplicativo multilocatário fragmentado que usa o Banco de Dados SQL do Azure.
      • O processo de implantação é executado por menos de cinco minutos.
    • Você deve ter a versão multilocatária fragmentada do Wingtip instalada. As versões para Standalone e Database por locatário não suportam este tutorial.
  • A versão mais recente do SQL Server Management Studio (SSMS) deve ser instalada. Baixe e instale o SSMS.

  • O Azure PowerShell deve estar instalado. Para obter detalhes, consulte Introdução ao Azure PowerShell.

Nota

Este tutorial usa recursos do serviço Banco de Dados SQL do Azure que estão em uma visualização limitada (trabalhos do Banco de Dados Elástico). Se você deseja fazer este tutorial, forneça sua ID de assinatura com SaaSFeedback@microsoft.com subject=Elastic Jobs Preview. Após receber a confirmação indicando que a sua subscrição foi ativada, deverá transferir e instalar os cmdlets mais recentes das tarefas da versão de pré-lançamento. Esta pré-visualização é limitada, por isso contacte-nos SaaSFeedback@microsoft.com para questões relacionadas ou suporte.

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

O modelo de banco de dados multilocatário fragmentado usado neste exemplo permite que um banco de dados de locatários contenha um ou mais locatários. Este exemplo explora o potencial de usar uma combinação de bancos de dados de vários locatários e de um locatário, permitindo um modelo de gerenciamento de locatário híbrido . O gerenciamento de alterações nesses bancos de dados pode ser complicado. O Elastic Jobs facilita a administração e o gerenciamento de um grande número de bancos de dados. Os trabalhos permitem que você execute scripts Transact-SQL como tarefas de forma segura e confiável em um grupo de bancos de dados de locatário. As tarefas são independentes da interação ou entrada do usuário. Esse método pode ser usado para implantar alterações no esquema ou em dados de referência comuns, em todos os locatários em um aplicativo. O Elastic Jobs também pode ser usado para manter uma cópia dourada do modelo do banco de dados. O modelo é usado para criar novos locatários, sempre garantindo que o esquema mais recente e os dados de referência estejam em uso.

screen

Pré-visualização limitada das Tarefas Elásticas

Há uma nova versão do Elastic Jobs que agora é um recurso integrado do Banco de Dados SQL do Azure. Esta nova versão das Tarefas Elásticas está atualmente em pré-visualização limitada. Atualmente, a visualização limitada oferece suporte ao uso do PowerShell para criar um agente de trabalho e do T-SQL para criar e gerenciar trabalhos.

Nota

Este tutorial utiliza funcionalidades do serviço de Base de Dados SQL que estão numa pré-visualização limitada (tarefas da Base de Dados Elástica). Se você deseja fazer este tutorial, forneça sua ID de assinatura com SaaSFeedback@microsoft.com subject=Elastic Jobs Preview. Após receber a confirmação indicando que a sua subscrição foi ativada, deverá transferir e instalar os cmdlets mais recentes das tarefas da versão de pré-lançamento. Esta pré-visualização é limitada, por isso contacte-nos SaaSFeedback@microsoft.com para questões relacionadas ou suporte.

Obtenha o código-fonte e os scripts do aplicativo Wingtip Tickets SaaS Multi-tenant Database

Os scripts Wingtip Tickets SaaS Multi-tenant Database e o código-fonte do aplicativo estão disponíveis no repositório WingtipTicketsSaaS-MultitenantDB no GitHub. Consulte 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 o banco de dados do agente de trabalho e o agente de trabalho. Como o msdb banco de dados usado pelo SQL Agent, um agente de trabalho usa um banco de dados no Banco de Dados SQL do Azure para armazenar definições de trabalho, status de trabalho e histórico. Depois que o agente de trabalho é criado, 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 nomeado jobagent no servidor de catálogo. Em seguida, o script cria o agente de trabalho, passando o jobagent banco de dados como um parâmetro.

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

Preparar

O banco de dados de cada locatário inclui um conjunto de tipos de local na VenueTypes tabela. Cada tipo de local define o tipo de eventos que podem ser realizados em um local. Esses tipos de local correspondem às imagens de plano de fundo que você vê no aplicativo de eventos do locatário. Neste exercício, você implanta uma atualização em todos os bancos de dados para adicionar dois tipos de locais adicionais: Corrida de Motocicletas 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 VenueTypes tabela. 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 contosoconcerthall banco de dados no tenants1-dpt-<user> servidor e consulte a VenueTypes tabela.

Passos

Agora você cria um trabalho para atualizar a VenueTypes tabela em cada banco de dados de locatários, adicionando os dois novos tipos de local.

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

  1. No SSMS, conecte-se ao servidor locatário: tenants1-mt-<user>.database.windows.net.

  2. Navegue até o tenants1 banco de dados.

  3. Consulte a tabela para confirmar que o VenueTypes Motociclismo e o Clube de Natação ainda não estão na lista de resultados.

  4. Conecte-se ao servidor de catálogo, que é catalog-mt-<user>.database.windows.net.

  5. Conecte-se ao jobagent banco de dados no servidor de catálogo.

  6. No SSMS, abra o arquivo ...\Learning Modules\Schema Management\DeployReferenceData.sql.

  7. Modifique a instrução: set @User = <user> e substitua o valor User usado quando você implantou o aplicativo Wingtip Tickets SaaS Multi-tenant Database.

  8. Prima F5 para executar o script.

Observação

Observe os seguintes itens no script DeployReferenceData.sql :

  • sp_add_target_group cria o nome do grupo de destino DemoServerGroup e adiciona membros de destino ao grupo.

  • sp_add_target_group_member acrescenta os seguintes itens:

    • Um tipo de membro de destino do servidor .
      • Este é o tenants1-mt-<user> servidor que contém os bancos de dados de locatários.
      • A inclusão do servidor inclui os bancos de dados de locatários existentes no momento em que o trabalho é executado.
    • Um tipo de membro de destino de banco de dados para o banco de dados modelo (basetenantdb) que reside no catalog-mt-<user> servidor,
    • Um tipo de membro de destino de banco de dados para incluir o adhocreporting banco de dados usado em um tutorial posterior.
  • 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. O trabalho atualiza o banco de dados de locatários e atualiza os dois bancos de dados adicionais que contêm a tabela de referência.

No SSMS, navegue até o banco de dados do locatário no tenants1-mt-<user> servidor. Consulte a tabela para confirmar que o VenueTypes Motorcycle Racing and Swimming Club foi adicionado à tabela. A contagem total de tipos de locais deveria ter aumentado em dois.

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

Este exercício cria um trabalho para reconstruir o índice na chave primária da tabela de referência em todos os bancos de dados do locatário. Uma reconstrução de índice é uma operação típica de gerenciamento de banco de dados que um administrador pode executar depois de carregar uma grande quantidade de carga de dados, para melhorar o desempenho.

  1. No SSMS, conecte-se ao jobagent banco de dados no catalog-mt-<user>.database.windows.net servidor.

  2. No SSMS, abra ...\Learning Modules\Schema Management\OnlineReindex.sql.

  3. Prima F5 para executar o script.

Observação

Observe os seguintes itens no script OnlineReindex.sql :

  • sp_add_job cria um novo trabalho 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 para determinar quando o trabalho foi concluído com êxito em todos os membros do lifecycle grupo-alvo.

Recursos adicionais

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.