Desejo criar um script/trabalho que será executado semanalmente para fazer backup do meu banco de dados PROD e restaurá-lo no meu servidor de controle de qualidade e, em seguida, executar um script de manutenção personalizado nele para limpar e preparar os dados a serem analisados.
O problema é que meu servidor de controle de qualidade está executando o Grupo de Disponibilidade AlwaysOn. Eu tenho acesso ao Powershell, scripts "DBATools.io", SQL Server Agent e um servidor SQL remoto, se puder ajudar. Tudo sob SQL2016.
Também acabei de descobrir hoje o recurso SQL2016 chamado AUTOMATIC SEEDING. Eu tentei e isso me permite ignorar as complicadas etapas "Adicionar banco de dados ao AG".
Então, até agora, posso simplificar as etapas para isso:
ALTER AVAILABILITY GROUP [SQLQA] REMOVE DATABASE [ProdData];
RESTORE DATABASE [ProdData]
FROM DISK=N'\\nas\Backup\ProdData.bak'
WITH FILE=1, NOUNLOAD, REPLACE, STATS=5,
MOVE N'ProdData' TO N'S:\Data\ProdData.mdf',
MOVE N'ProdData_log' TO N'T:\Log\ProdData_Log.LDF';
-- Missing a step here to physically remove the old database from the secondary server, at this point in "Recovery pending". If the old database is still there, the AUTOMATIC SEEDING will not work, nor the manual steps of adding a database to AlwaysOn for that matter.
ALTER AVAILABILITY GROUP [SQLQA] ADD DATABASE [ProdData];
-- Run custom maintenance/cleanup SQL code here
A grande questão é: quais são minhas opções para me livrar do antigo banco de dados secundário de destino?
Como alternativa, alguém tem uma maneira super quente de baixar os dados de produção para ambientes de controle de qualidade ou DEV de maneira fácil e automática?
Desde já, obrigado.
Você pode criar um servidor vinculado e usar
Execute At LinkedServer
. Isso é o que estou fazendo nos meus scripts atuais quando tenho que atualizar o env AG no Dev/QA do PROD.Você pode usar powershell, etc .. mas
Execute At LinkedServer
funciona bem para as minhas necessidades.Os scripts de atualização para ambientes downstream são específicos para o ambiente da empresa, esp. o processo pós-restauração, como dessensibilização ou mascaramento de dados, etc. Então, eu diria, invista algum tempo de engenharia e torne o processo repetível, o que economizará muito tempo no futuro.
Seguindo o conselho de Kin, aqui está o resultado (semi)final. Se algumas pessoas o adicionarem para torná-lo ainda mais modular/parametrizável/robusto, tenho certeza que pode ser útil.