Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server 2019 (15.x) a novější verze
V tomto článku se naučíte povolit a zakázat zrychlené obnovení databáze (ADR) s Transact-SQL (T-SQL) v SQL Serveru 2019 (15.x) a novějších verzích a jak změnit skupinu souborů trvalého úložiště verzí (PVS), kterou používá ADR.
Note
Ve službě Azure SQL Database, Azure SQL Managed Instance a sql database v Microsoft Fabric je vždy povolené zrychlené obnovení databáze (ADR). Pokud zaznamenáte problémy, jako je vysoké využití úložiště pomocí PVS nebo pomalé vyčištění ADR, přečtěte si téma Monitorování a řešení potíží s akcelerovaným obnovením databáze nebo se obraťte na podporu Azure.
Kdo by měl zvážit zrychlené obnovení databáze
Mnoho zákazníků považuje akcelerované obnovení databáze (ADR) za cennou technologii ke zlepšení doby obnovení databáze a k zabránění zdlouhavým vrácení změn.
Pokud se vaše databázové úlohy často setkávají s následujícími scénáři, můžete využít ADR:
- Dlouhotrvající transakce, kterým se nelze vyhnout. ADR například pomáhá v případech, kdy jsou dlouhotrvající transakce ohroženy vrácením zpět.
- Aktivní transakce, které způsobují, že se transakční log výrazně zvětšuje.
- Dlouhotrvající obnovení databáze, které má vliv na dostupnost databáze (například po neočekávaném restartování SQL Serveru nebo vrácení ruční transakce zpět).
Pokud vaše aplikace používá velký objem úprav s jedním řádkem v jednotlivých transakcích, nemusí být vaše úloha pro ADR optimální. Pokud je to možné, zvažte dávkové změny ve vícerořádkových příkazech a vyhněte se velkému objemu malých transakcí DML.
Povolení ADR
ADR je ve výchozím nastavení vypnuté a je k dispozici od SQL Serveru 2019 (15.x).
K povolení ADR použijte následující příkaz Transact-SQL (T-SQL):
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
K povolení nebo zakázání ADR je nutný exkluzivní zámek databáze. To znamená, že příkaz ALTER DATABASE je zablokovaný, dokud nebudou všechny aktivní relace pryč a že všechny nové relace čekají za příkazem ALTER DATABASE. Pokud je důležité dokončit operaci a odebrat zámek, můžete pomocí klauzule ukončení WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT] přerušit všechny aktivní relace v databázi. Další informace naleznete v tématu MOŽNOSTI ALTER DATABASE SET.
Pokud povolíte nebo zakážete ADR v tempdb, není vyžadován výhradní zámek databáze a klauzule ukončení by neměla být specifikována. Aby se však změna projevila, musí dojít k restartování databázového stroje.
Zakázání ADR
K zakázání ADR použijte následující příkaz T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
I po zakázání ADR můžou existovat verze uložené v PVS, které systém stále potřebuje k logickému vrácení, dokud se všechny aktivní transakce dokončí. Pokud zakážete ADR v tempdb, je vyžadován restart databázového serveru, aby se změna projevila.
Změna skupiny souborů PVS
Ve výchozím nastavení jsou data trvalého úložiště verzí (PVS) ve skupině souborů PRIMARY. V případě potřeby můžete PVS přesunout do jiné skupiny souborů. Může například vyžadovat více místa nebo rychlejší úložiště.
Pokud chcete změnit umístění PVS na jinou skupinu souborů, postupujte takto:
Vytvořte skupinu souborů pro PVS a přidejte do této skupiny souborů alespoň jeden datový soubor. Například:
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];Pomocí následujícího příkazu T-SQL zakažte ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GOPočkejte, až se odeberou všechny verze uložené v PVS.
Pokud chcete povolit ADR pomocí nového umístění PVS, ujistěte se nejprve, že všechny informace o verzi byly odstraněny z předchozího umístění PVS. Můžete vynutit vyčištění pomocí uložené procedury sys.sp_persistent_version_cleanup.
EXEC sys.sp_persistent_version_cleanup [<db_name>];Uložená procedura
sys.sp_persistent_version_cleanupje synchronní, což znamená, že se nedokončí, dokud se všechny informace o verzi neodstraní z aktuálního PVS. Po dokončení a za předpokladu, že je funkce ADR zakázána, můžete ověřit odebrání informací o verzi pomocí dotazu sys.dm_tran_persistent_version_store_stats a zkontrolováním hodnotypersistent_version_store_size_kb. Například:SELECT DB_NAME(database_id), persistent_version_store_size_kb FROM sys.dm_tran_persistent_version_store_stats WHERE database_id = [MyDatabaseID];Pokud je hodnota
persistent_version_store_size_kb0, můžete znovu povolit ADR a umístit PVS do nové skupiny souborů.Povolte ADR a zadejte nové umístění PVS pomocí následujícího příkazu T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
Note
Přesunutí PVS do jiné skupiny souborů není podporováno, tempdb protože do souboru nelze přidat skupinytempdbsouborů .
Sledujte velikost PVS
Po povolení ADR v databázi monitorujte velikost úložiště trvalých verzí (PVS) a výkon čištění PVS. Další informace najdete v tématu Monitorování a řešení potíží s akcelerovaným obnovením databáze.