Versneld databaseherstel beheren
Van toepassing op: SQL Server 2019 (15.x) en latere versies
In dit artikel leert u hoe u versneld databaseherstel (ADR) kunt in- en uitschakelen met Transact-SQL (T-SQL) in SQL Server 2019 (15.x) en latere versies, en hoe u de permanente versieopslagbestandsgroep (PVS) wijzigt die wordt gebruikt door ADR.
Notitie
In Azure SQL Database, Azure SQL Managed Instance en SQL Database in Microsoft Fabric is versneld databaseherstel (ADR) altijd ingeschakeld. Als u problemen ondervindt, zoals een hoog opslaggebruik door PVS of trage ADR-opschoning, raadpleegt u Bewaken en problemen oplossen met versneld databaseherstel of neemt u contact op met Azure-ondersteunings-.
Wie moet overwegen om versneld databaseherstel uit te voeren
Veel klanten vinden versneld databaseherstel (ADR) een waardevolle technologie om de hersteltijd van de database te verbeteren.
Als uw databaseworkloads vaak de volgende scenario's tegenkomen, profiteert u mogelijk van ADR:
- Langlopende transacties die niet kunnen worden vermeden. In gevallen waarin langdurige transacties bijvoorbeeld risico lopen om terug te draaien, kan ADR u helpen.
- Actieve transacties die ervoor zorgen dat het transactielogboek aanzienlijk toeneemt.
- Langdurig databaseherstel dat van invloed is op de beschikbaarheid van de database (bijvoorbeeld na een onverwachte herstart van SQL Server of handmatige terugdraaiing van een transactie).
Als uw toepassing een groot aantal wijzigingen van één rij in afzonderlijke transacties gebruikt, is uw workload mogelijk niet optimaal voor ADR. Overweeg waar mogelijk wijzigingen in instructies met meerdere rijen in batches te verwerken en vermijd een groot aantal kleine DML-transacties.
ADR inschakelen
ADR is standaard uitgeschakeld en is beschikbaar vanaf SQL Server 2019 (15.x).
Gebruik de volgende Transact-SQL opdracht (T-SQL) om ADR in te schakelen:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
Een exclusieve databasevergrendeling is nodig om ADR in of uit te schakelen. Dit betekent dat de opdracht ALTER DATABASE
wordt geblokkeerd totdat alle actieve sessies zijn verdwenen en dat eventuele nieuwe sessies achter de ALTER DATABASE
opdracht wachten. Als het belangrijk is om de bewerking te voltooien en de vergrendeling te verwijderen, kunt u de beëindigingsclausule gebruiken WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT]
om actieve sessies in de database af te breken. Raadpleeg ALTER DATABASE SET optiesvoor meer informatie.
ADR uitschakelen
Gebruik de volgende T-SQL-opdracht om ADR uit te schakelen:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
Zelfs nadat ADR is uitgeschakeld, zijn er mogelijk versies opgeslagen in PVS die het systeem nog steeds nodig heeft voor logisch terugkeren totdat alle actieve transacties zijn voltooid.
De PVS-bestandsgroep wijzigen
De PVS-gegevens (Persistent Version Store) bevinden zich standaard in de PRIMARY
bestandsgroep. U kunt PVS indien nodig verplaatsen naar een andere bestandsgroep. Het kan bijvoorbeeld meer ruimte of snellere opslag vereisen.
Voer de volgende stappen uit om de locatie van de PVS te wijzigen in een andere bestandsgroep:
Maak de bestandsgroep voor PVS en voeg ten minste één gegevensbestand toe aan deze bestandsgroep. Bijvoorbeeld:
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];
Schakel ADR uit met de volgende T-SQL-opdracht:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GO
Wacht totdat alle versies die zijn opgeslagen in PVS zijn verwijderd.
Als u ADR wilt inschakelen met behulp van een nieuwe PVS-locatie, moet u eerst controleren of alle versie-informatie is verwijderd van de vorige PVS-locatie. U kunt afdwingen dat het opschonen plaatsvindt met de sys.sp_persistent_version_cleanup opgeslagen procedure:
EXEC sys.sp_persistent_version_cleanup [<db_name>];
De
sys.sp_persistent_version_cleanup
opgeslagen procedure is synchroon, wat betekent dat deze pas wordt voltooid als alle versiegegevens van de huidige PVS worden opgeschoond. Zodra deze is voltooid en ervan uitgaande dat ADR is uitgeschakeld, kunt u controleren of versiegegevens worden verwijderd door een query uit te voeren op sys.dm_tran_persistent_version_store_stats en de waarde vanpersistent_version_store_size_kb
te onderzoeken. Bijvoorbeeld:SELECT DB_NAME(database_id), persistent_version_store_size_kb FROM sys.dm_tran_persistent_version_store_stats WHERE database_id = [MyDatabaseID];
Wanneer de waarde van
persistent_version_store_size_kb
is0
, kunt u ADR opnieuw inschakelen en PVS in de nieuwe bestandsgroep plaatsen.Schakel ADR in en geef de nieuwe PVS-locatie op met de volgende T-SQL-opdracht:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
De grootte van de PVS bewaken
Zodra u ADR hebt ingeschakeld in een database, controleert u de grootte van het permanente versiearchief (PVS) en de prestaties van pvs-opschoning. Zie Bewaken en problemen met versneld databaseherstel oplossenvoor meer informatie.