Partilhar via


Gerencie a recuperação acelerada do banco de dados

Aplica-se a: SQL Server 2019 (15.x) e versões posteriores

Este artigo ensina a habilitar e desabilitar de recuperação acelerada de banco de dados (ADR) com Transact-SQL (T-SQL) no SQL Server 2019 (15.x) e versões posteriores, bem como alterar o grupo de arquivos de armazenamento de versão persistente (PVS) usado pelo ADR.

Observação

No Banco de Dados SQL do Azure, na Instância Gerenciada SQL do Azure e no Banco de Dados SQL no Microsoft Fabric, a recuperação acelerada de banco de dados (ADR) está sempre habilitada. Se observar problemas, como alto uso de armazenamento pelo PVS ou limpeza lenta do ADR, consulte Monitorizar e resolver problemas da recuperação acelerada da base de dados ou entre em contato com o suporte da Azure.

Quem deve considerar a recuperação acelerada do banco de dados

Muitos clientes consideram a recuperação acelerada de banco de dados (ADR) uma tecnologia valiosa para melhorar o tempo de recuperação do banco de dados.

Se as cargas de trabalho do banco de dados encontrarem frequentemente os seguintes cenários, você poderá se beneficiar do ADR:

  • Transações de longa duração que não podem ser evitadas. Por exemplo, nos casos em que transações de longa duração correm o risco de serem revertidas, o ADR pode ajudar.
  • Transações ativas que fazem com que o log de transações cresça significativamente.
  • Recuperação de banco de dados de longa execução 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 seu aplicativo usa um grande volume de modificações de linha única em transações individuais, sua carga de trabalho pode não ser ideal para ADR. Considere agrupar modificações em declarações de múltiplas linhas sempre que possível e evite um grande volume de pequenas transações DML.

Ativar ADR

O ADR está desativado por padrão e disponível a partir do SQL Server 2019 (15.x).

Use o seguinte comando Transact-SQL (T-SQL) para habilitar o ADR:

ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;

É necessário um bloqueio exclusivo da base de dados para ativar ou desativar o ADR. Isso significa que o comando ALTER DATABASE é bloqueado até que todas as sessões ativas sejam eliminadas e que todas as novas sessões aguardam atrás do comando ALTER DATABASE. Se for importante concluir a operação e remover o bloqueio, você pode usar a cláusula de rescisão, WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT] para anular quaisquer sessões ativas no banco de dados. Para obter mais informações, consulte ALTER DATABASE SET opções.

Desativar ADR

Use o seguinte comando T-SQL para desabilitar o ADR:

ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO

Mesmo depois que o ADR é desativado, pode haver versões armazenadas no PVS que o sistema ainda precisa para reverter logicamente até que todas as transações ativas sejam concluídas.

Alterar o grupo de arquivos PVS

Por padrão, os dados de armazenamento de versão persistente (PVS) estão no PRIMARY grupo de arquivos. Você pode mover o PVS para um grupo de arquivos diferente, se necessário. Por exemplo, pode exigir mais espaço ou armazenamento mais rápido.

Para alterar a localização do PVS para um grupo de ficheiros diferente, siga estes passos:

  1. Crie o grupo de arquivos para 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. Desative o 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 o ADR usando um novo local PVS, primeiro verifique se todas as informações de versão foram limpas do local PVS anterior. ** Você pode forçar a limpeza para ocorrer 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 limpas do PVS atual. Uma vez concluído o processo, e supondo que o ADR esteja desativado, pode verificar se as informações de versão foram removidas consultando sys.dm_tran_persistent_version_store_stats e examinando 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 estiver 0, você poderá reativar o ADR e colocar o PVS no novo grupo de arquivos.

  4. Habilite o 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]);
    

Monitore o tamanho do PVS

Depois de habilitar o ADR em um banco de dados, monitore o tamanho do armazenamento de versão persistente (PVS) e o desempenho da limpeza do PVS. Para obter mais informações, consulte Monitorizar e resolver problemas de recuperação acelerada de base de dados.