Dela via


Hantera accelererad databasåterställning

gäller för: SQL Server 2019 (15.x) och senare versioner

I den här artikeln lär du dig att aktivera och inaktivera accelererad databasåterställning (ADR) med Transact-SQL (T-SQL) i SQL Server 2019 (15.x) och senare versioner, samt hur du ändrar filgruppen för beständiga versionslager (PVS) som används av ADR.

Not

I Azure SQL Database, Azure SQL Managed Instance och SQL Database i Microsoft Fabric är accelererad databasåterställning (ADR) alltid aktiverad. Om du ser problem, till exempel hög lagringsanvändning av PVS eller långsam ADR-rensning, kan du läsa Övervaka och felsöka accelererad databasåterställning eller kontakta Azure-supporten.

Vem bör överväga accelererad databasåterställning

Många kunder tycker att accelererad databasåterställning (ADR) är en värdefull teknik för att förbättra databasåterställningstiden.

Om dina databasarbetsbelastningar ofta stöter på följande scenarier kan du dra nytta av ADR:

  • Tidskrävande transaktioner som inte kan undvikas. Till exempel, i fall där långvariga transaktioner riskerar att avbrytas, kan ADR hjälpa till.
  • Aktiva transaktioner som gör att transaktionsloggen växer avsevärt.
  • Tidskrävande databasåterställning som påverkar databasens tillgänglighet (till exempel efter en oväntad omstart av SQL Server eller manuell återställning av transaktioner).

Om ditt program använder en stor mängd enradsändringar i enskilda transaktioner kanske din arbetsbelastning inte är optimal för ADR. Överväg att utföra ändringar i batch i flerradskommandon där det är möjligt och undvik en stor mängd små DML-transaktioner.

Aktivera ADR

ADR är inaktiverat som standard och tillgängligt från och med SQL Server 2019 (15.x).

Använd följande Transact-SQL-kommando (T-SQL) för att aktivera ADR:

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

Ett exklusivt databaslås krävs för att aktivera eller inaktivera ADR. Det innebär att kommandot ALTER DATABASE blockeras tills alla aktiva sessioner är borta och att alla nya sessioner väntar bakom kommandot ALTER DATABASE. Om det är viktigt att slutföra åtgärden och ta bort låset kan du använda avslutningssatsen WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT] för att avbryta aktiva sessioner i databasen. Mer information finns i ALTER DATABASE SET-alternativ.

Inaktivera ADR

Använd följande T-SQL-kommando för att inaktivera ADR:

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

Även när ADR har inaktiverats kan det finnas versioner som lagras i PVS som systemet fortfarande behöver för logisk återställning tills alla aktiva transaktioner har slutförts.

Ändra PVS-filgruppen

Som standard finns data i det beständiga versionsarkivet (PVS) på PRIMARY filgrupp. Du kan flytta PVS till en annan filgrupp om det behövs. Det kan till exempel kräva mer utrymme eller snabbare lagring.

Följ dessa steg om du vill ändra platsen för PVS till en annan filgrupp:

  1. Skapa filgruppen för PVS och lägg till minst en datafil i den här filgruppen. Till exempel:

    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. Inaktivera ADR med följande T-SQL-kommando:

    ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
    GO
    
  3. Vänta tills alla versioner som lagras i PVS har tagits bort.

    Om du vill aktivera ADR med en ny PVS-plats kontrollerar du först att all versionsinformation har rensats från den tidigare PVS-platsen. Du kan tvinga rensningen att ske med den sys.sp_persistent_version_cleanup lagrad procedur:

    EXEC sys.sp_persistent_version_cleanup [<db_name>];
    

    Den sys.sp_persistent_version_cleanup lagrade proceduren är synkron, vilket innebär att den inte slutförs förrän all versionsinformation rensas från den aktuella PVS-datorn. När den är klar, och förutsatt att ADR är inaktiverad, kan du kontrollera att versionsinformationen tas bort genom att fråga sys.dm_tran_persistent_version_store_stats och undersöka värdet för persistent_version_store_size_kb. Till exempel:

    SELECT DB_NAME(database_id),
           persistent_version_store_size_kb
    FROM sys.dm_tran_persistent_version_store_stats
    WHERE database_id = [MyDatabaseID];
    

    När värdet för persistent_version_store_size_kb är 0kan du återaktivera ADR och placera PVS på den nya filgruppen.

  4. Aktivera ADR och ange den nya PVS-platsen med följande T-SQL-kommando:

    ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON
    (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
    

Övervaka storleken på PVS

När du aktiverar ADR i en databas övervakar du storleken på det beständiga versionsarkivet (PVS) och PVS-rensningsprestanda. Mer information finns i Övervaka och felsöka accelererad databasåterställning.