Gerenciar Recuperação Acelerada de Banco de Dados
Aplica-se a: SQL Server 2019 (15.x) e versões posteriores
Este artigo ensina a habilitar e desabilitar a ADR (Recuperação Acelerada de Banco de Dados) com o T-SQL (Transact-SQL) no SQL Server 2019 (15.x) e versões posteriores, bem como alterar o grupo de arquivos do PVS (repositório de versão persistente) usado pela ADR.
Observação
No Banco de Dados SQL do Azure, na Instância Gerenciada de SQL do Azure e no Banco de Dados SQL no Microsoft Fabric, a ADR (Recuperação Acelerada de Banco de Dados) está sempre habilitada. Se você observar problemas, como alto uso de armazenamento por PVS ou limpeza lenta da ADR, consulte Monitoramento e solução de problemas de recuperação acelerada de banco de dados ou entre em contato com o suporte do Azure .
Quem deve considerar usar a recuperação de banco de dados acelerada
Muitos clientes consideram a ADR (Recuperação Acelerada de Banco de Dados) uma tecnologia valiosa para aprimorar o tempo de recuperação do banco de dados.
Se as suas cargas de trabalho de banco de dados encontrarem frequentemente os seguintes cenários, você poderá se beneficiar da ADR:
- Transações de execução prolongada que não podem ser evitadas. Por exemplo, nos casos em que as transações de longa duração correm o risco de serem revertidas, a ADR pode ajudar.
- Transações ativas que fazem o log de transações crescer significativamente.
- Recuperação de banco de dados de execução prolongada que afeta a disponibilidade do banco de dados (por exemplo, após uma reinicialização inesperada do SQL Server ou reversão manual de transações).
Se o aplicativo usar um alto volume de modificações de linha única em transações individuais, sua carga de trabalho poderá não ser ideal para a ADR. Considere agrupar modificações em instruções de múltiplas linhas sempre que possível e evite um alto volume de transações DML pequenas.
Habilitar a ADR
A ADR está desativada por padrão e disponível a partir do SQL Server 2019 (15.x).
Use o seguinte comando T-SQL (Transact-SQL) para habilitar a ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
Um bloqueio de banco de dados exclusivo é necessário para habilitar ou desabilitar a ADR. Isso significa que o comando ALTER DATABASE
é bloqueado até que todas as sessões ativas tenham sido encerradas e que todas as novas sessões aguardem na fila do comando ALTER DATABASE
. Se for importante concluir a operação e remover o bloqueio, use a cláusula de terminação, WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT]
, para anular todas as sessões ativas no banco de dados. Para obter mais informações, consulte Opções ALTER DATABASE SET.
Desabilitar a ADR
Use o seguinte comando T-SQL para desabilitar a ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
Mesmo depois que a ADR estiver desabilitada, pode haver versões armazenadas em PVS que o sistema ainda precisa para a reversão lógica até que todas as transações ativas sejam concluídas.
Alterar o grupo de arquivos do PVS
Por padrão, os dados do PVS (repositório de versão persistente) estão no grupo de arquivos PRIMARY
. Você pode mover o PVS para um grupo de arquivos diferente, se necessário. Por exemplo, ele pode exigir mais espaço ou um armazenamento mais rápido.
Para alterar o local do PVS para um grupo de arquivos diferente, siga estas etapas:
Crie o grupo de arquivos para o PVS e adicione, pelo menos, um arquivo de dados a esse grupo de arquivos. Por exemplo:
ALTER DATABASE [<db_name>] ADD FILEGROUP [VersionStoreFG]; GO ALTER DATABASE [<db_name>] ADD FILE ( NAME = N'VersionStoreFG', FILENAME = N'E:\DATA\VersionStore.ndf', SIZE = 8192 MB, FILEGROWTH = 64 MB ) TO FILEGROUP [VersionStoreFG];
Desabilite a ADR com o seguinte comando T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GO
Aguarde até que todas as versões armazenadas no PVS sejam removidas.
Para habilitar a ADR usando um novo local do PVS, primeiro verifique se todas as informações de versão foram limpas do local anterior do PVS. Você pode forçar que a limpeza ocorra com o procedimento armazenado sys.sp_persistent_version_cleanup:
EXEC sys.sp_persistent_version_cleanup [<db_name>];
O procedimento armazenado
sys.sp_persistent_version_cleanup
é síncrono, o que significa que ele não será concluído até que todas as informações de versão sejam eliminadas do PVS atual. Assim que estiver concluído e considerando que a ADR está desabilitada, você poderá verificar se as informações de versão foram removidas consultando sys.dm_tran_persistent_version_store_stats e observando o valor depersistent_version_store_size_kb
. Por exemplo:SELECT DB_NAME(database_id), persistent_version_store_size_kb FROM sys.dm_tran_persistent_version_store_stats WHERE database_id = [MyDatabaseID];
Quando o valor de
persistent_version_store_size_kb
é0
, você pode habilitar novamente a ADR e colocar a PVS no novo grupo de arquivos.Habilite a ADR e especifique o novo local do PVS com o seguinte comando T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
Monitorar o tamanho do PVS
Depois de habilitar a ADR em um banco de dados, monitore o tamanho do PVS (repositório de versão persistente) e do desempenho de limpeza de PVS. Para obter mais informações, confira Monitorar e solucionar problemas da Recuperação Acelerada de Banco de Dados.