Compartilhar via


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:

  1. 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];
    
  2. Desabilite a ADR com o seguinte comando T-SQL:

    ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
    GO
    
  3. 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 de persistent_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.

  4. 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.