Gerenciar o 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 de manter um grupo de bancos de dados em um aplicativo SaaS (Software como Serviço). As soluções são demonstradas para expandir as alterações de esquema em grupos 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 os dados de referência ou o esquema, ou aplicar tarefas de manutenção de banco de dados. Com um aplicativo SaaS usando um padrão de banco de dados por locatário, as alterações devem ser coordenadas entre um grupo potencialmente grande de bancos de dados de locatário. Além disso, você deve incorporar essas alterações no processo de provisionamento de banco de dados para fazer com que elas sejam incluídas nos novos bancos de dados conforme eles são criados.
Dois cenários
Este tutorial aborda os dois cenários a seguir:
- Implantar as atualizações de dados de referência para todos os locatários.
- A recriação de um índice em uma tabela que contém os dados de referência.
O recurso de Trabalhos Elástico 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ário do “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, você aprenderá a:
- Criar um trabalho de agente.
- Executar uma consulta de T-SQL em vários bancos de dados de locatário.
- Atualizar dados de referência em todos os bancos de dados de locatário.
- Criar 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 SaaS Wingtip Tickets:
Implantar e explorar um aplicativo multilocatário fragmentado que usa o Banco de dados SQL do Azure.- O processo de implantação é executado em menos de cinco minutos.
- Você deve ter a versão multilocatário fragmentada do Wingtip instalada. As versões para Autônomo e Banco de dados por locatário não dão suporte a este tutorial.
- Para obter instruções, consulte o primeiro tutorial, que apresenta o aplicativo de banco de dados multilocatário SaaS Wingtip Tickets:
A última versão do SQL Server Management Studio (SSMS) deve estar instalada. Baixar e Instalar o SSMS.
O Azure PowerShell deve estar instalado. Para obter detalhes, consulte Introdução ao Azure PowerShell.
Introdução aos padrões de gerenciamento de esquema de SaaS
O modelo de banco de dados multilocatário fragmentado usado nesta amostra permite que um banco de dados de locatários contenha um ou mais locatários. Esta amostra explora o potencial do uso de uma combinação de bancos de dados multilocatário e de locatário único, possibilitando um modelo híbrido de gerenciamento de locatários. O gerenciamento de alterações para esses bancos de dados pode ser complicado. Os Trabalhos Elásticos facilitam a administração e o gerenciamento de grandes quantidades de banco de dados. Os trabalhos permitem uma execução segura e confiável dos scripts de Transact-SQL como tarefas 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 nos dados de referência comuns, em todos os locatários em um aplicativo. Trabalhos Elásticos também podem ser usados para manter uma cópia do modelo final do banco de dados. O modelo é usado para criar novos locatários, garantindo sempre que esquema e os dados de referência mais recentes estão sendo usados.
Trabalhos elásticos
Em 2024, os trabalhos elásticos foram lançados como um produto disponível para o público em geral e cheio de novos recursos. Um recurso integrado do Banco de Dados SQL do Azure, consulte trabalhos de banco de dados elásticos.
Obter o código-fonte e os scripts do aplicativo de banco de dados multilocatário SaaS Wingtip Tickets
Os scripts e o código-fonte do aplicativo de Banco de Dados Multilocatário SaaS Wingtip Tickets estão disponíveis no repositório WingtipTicketsSaaS-MultitenantDB no GitHub. Veja as diretrizes gerais para obter 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 exige que você use o PowerShell para criar o banco de dados de agente de trabalho e o agente de trabalho. Assim como o banco de dados msdb
usado pelo SQL Agent, um agente de trabalho usa um 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.
- No ISE do PowerShell, abra ...\Learning Modules\Schema Management\Demo-SchemaManagement.ps1.
- Pressione F5 para executar o script.
O script Demo-SchemaManagement.ps1 chama o script Deploy-SchemaManagement.ps1 para criar um banco de dados de nome jobagent
no servidor de catálogo. O script cria o agente de trabalho, passando o banco de dados jobagent
como um parâmetro.
Criar um trabalho para implantar novos dados de referência para todos os locatários
Preparar
Cada banco de dados de locatários inclui um conjunto de tipos de local na tabela VenueTypes
. Cada tipo de local define os tipos de eventos que podem ser hospedados em um local. Esses tipos de local correspondem às imagens de tela de fundo que você vê no aplicativo de eventos de locatário. Neste exercício, você implanta uma atualização em todos os bancos de dados para adicionar dois tipos de local: Motorcycle Racing e Swimming Club.
Primeiro, revise os tipos de local incluídos em cada banco de dados de locatário. Conecte-se a um banco de dados de locatário no SSMS (SQL Server Management Studio) e verifique a tabela VenueTypes
. Você também pode consultar essa tabela no Editor de consultas no portal do Azure, acessado pela página do banco de dados.
- Abra o SSMS e conecte-se ao servidor de locatários:
tenants1-dpt-<user>.database.windows.net
. - Para confirmar que o Motorcycle Racing e o Swimming Club não estão incluídos no momento, navegue até o banco de dados
contosoconcerthall
no servidortenants1-dpt-<user>
e consulte a tabelaVenueTypes
.
Etapas
Agora você cria um trabalho para atualizar a tabela VenueTypes
em cada banco de dados de locatários adicionando os novos tipos de local.
Para criar um novo trabalho, você usa um conjunto de trabalhos que os procedimentos armazenados do sistema criou no banco de dados jobagent
. Os procedimentos armazenados foram criados quando a conta de trabalho foi criada.
Abra o SSMS e conecte-se ao servidor de locatários:
tenants1-mt-<user>.database.windows.net
.Navegue até o banco de dados
tenants1
.Consulta a tabela
VenueTypes
para confirmar que Motorcycle Racing e Swimming Club ainda não estão na lista de resultados.Conecte-se ao servidor de catálogo, que é
catalog-mt-<user>.database.windows.net
.Conecte-se ao banco de dados
jobagent
no servidor de catálogo.No SSMS, abra o arquivo …...\Learning Modules\Schema Management\DeployReferenceData.sql.
Modifique a instrução
set @User = <user>
e substitua o valor User usado quando você implantou o aplicativo SaaS de Banco de Dados Multilocatário Wingtip Tickets.Pressione F5 para executar o script.
Observar
Observe os seguintes itens no script DeployReferenceData.sql:
sp_add_target_group cria o nome do grupo de destino DemoServerGroup e adiciona os membros de destino ao grupo.
sp_add_target_group_member adiciona os seguintes itens:
- Um tipo de membro de destino server.
- Este é o servidor
tenants1-mt-<user>
que contém os bancos de dados de locatários. - A inclusão do servidor inclui os bancos de dados de locatário que existem no momento em que o trabalho é executado.
- Este é o servidor
- Um tipo de membro de destino database para o banco de dados modelo (
basetenantdb
) que reside no servidorcatalog-mt-<user>
, - Um tipo de membro de destino database para incluir o banco de dados
adhocreporting
que é usado em um tutorial posterior.
- Um tipo de membro de destino server.
sp_add_job cria um trabalho chamado Reference Data Deployment.
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 exibições restantes no script exibem a existência dos objetos e monitoram a execução do trabalho. Use essas consultas para examinar o valor do status na coluna lifecycle para determinar quando o trabalho foi concluído. O trabalho atualiza o banco de dados de locatários e atualiza os dois outros bancos de dados que contêm a tabela de referência.
No SSMS, navegue até o banco de dados de locatário no servidor tenants1-mt-<user>
. Consulta a tabela VenueTypes
para confirmar que Motorcycle Racing e Swimming Club ainda não foram adicionados à tabela. A contagem total de tipos de local deve ter aumentado em duas unidades.
Criar um trabalho para gerenciar o índice da tabela de referência
Este exercício cria um trabalho para recriar o índice de chave primária da tabela de referência em todos os bancos de dados de locatário. Uma recompilação de índice é uma operação de gerenciamento de banco de dados normal que um administrador pode executar após carregar uma grande quantidade de dados para melhorar o desempenho.
No SSMS, conecte-se ao banco de dados
jobagent
no servidorcatalog-mt-<user>.database.windows.net
.Em SSMS, abra ...\Learning Modules\Schema Management\OnlineReindex.sql.
Pressione F5 para executar o script.
Observar
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.As exibições restantes na execução do trabalho no monitor de script. Use essas consultas para examinar o valor do status na coluna
lifecycle
para determinar quando o trabalho foi concluído com êxito em todos os membros do grupo de destino.
Recursos adicionais
Próximas etapas
Neste tutorial, você aprendeu a:
- Criar um trabalho de agente para ser executado em trabalhos de T-SQL entre vários bancos de dados
- Atualizar dados de referência em todos os bancos de dados de locatário
- Criar um índice em uma tabela em todos os bancos de dados de locatário
Em seguida, confira o tutorial de relatórios ad hoc para explorar a execução de consultas distribuídas entre bancos de dados de locatário.