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:
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];
Inaktivera ADR med följande T-SQL-kommando:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GO
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örpersistent_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
är0
kan du återaktivera ADR och placera PVS på den nya filgruppen.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.