管理加速資料庫復原
適用於: SQL Server 2019 (15.x) 和更新版本
本文將教您如何在 SQL Server 2019 (15.x) 及更新版本中,使用 Transact-SQL 的 類加速資料庫復原(ADR) 進行啟用和停用,以及如何更改由 ADR 使用的永續性版本存放區(PVS)檔案群組。
注意
在 Azure SQL Database、Microsoft Fabric 中的 Azure SQL 受控實例和 SQL 資料庫中,一律會啟用加速資料庫復原 (ADR)。 如果您觀察到 PVS 的高記憶體使用量或 ADR 清除速度緩慢等問題,請參閱 監視和疑難解答加速資料庫復原,或連絡 azure 支援 。
應考慮加速資料庫復原的對象
許多客戶發現加速資料庫復原 (ADR) 是一種寶貴的技術,可改善資料庫復原時間。
如果您的資料庫工作負載經常遇到下列案例,您可能會受益於 ADR:
- 無法避免的長時間交易。 例如,若長時間執行的異動具有復原風險,ADR 可提供協助。
- 造成交易記錄檔顯著增長的活躍交易。
- 長時間執行的資料庫復原會影響資料庫的可用性(例如,在非預期的 SQL Server 重新啟動或手動交易回復之後)。
如果您的應用程式在個別交易中使用大量單一數據列修改,您的工作負載可能不適合 ADR。 請考慮盡可能在多數據列語句中批處理修改,並避免大量小型 DML 交易。
啟用 ADR
ADR 預設為關閉,且從 SQL Server 2019 (15.x) 開始提供。
使用下列 Transact-SQL (T-SQL) 命令來啟用 ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
必須有獨占資料庫鎖定,才能啟用或停用 ADR。 這表示 ALTER DATABASE
命令會遭到封鎖,直到所有使用中的會話都消失,而且任何新的會話都會在 ALTER DATABASE
命令後面等候。 如果重要完成作業並移除鎖定,您可以使用終止條款 WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT]
中止資料庫中的任何作用中會話。 如需詳細資訊,請參閱 ALTER DATABASE SET 選項。
停用 ADR
使用下列 T-SQL 命令來停用 ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
即使在 ADR 停用之後,系統可能仍需倚賴儲存在 PVS 中的版本進行邏輯還原,直到所有使用中的交易完成為止。
變更 PVS 檔案群組
根據預設,持續性版本存放區 (PVS) 資料位於 PRIMARY
檔案群組上。 如有必要,您可以將 PVS 移至不同的檔案群組。 例如,它可能需要更多空間或更快的儲存空間。
若要將 PVS 的位置變更為不同的檔案群組,請遵循下列步驟:
建立 PVS 的檔案群組,並將至少一個數據檔新增至此檔案群組。 例如:
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];
使用下列 T-SQL 命令停用 ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GO
等到所有儲存在 PVS 中的版本都移除為止。
若要使用新的 PVS 位置啟用 ADR,請先確定所有版本資訊都已從先前的 PVS 位置清除。 您可以使用 sys.sp_persistent_version_cleanup 儲存程序來強制執行清理:
EXEC sys.sp_persistent_version_cleanup [<db_name>];
sys.sp_persistent_version_cleanup
預存程式是同步的,這表示只有當從目前的 PVS 清除所有版本資訊後,它才會完成。 完成後,假設 ADR 已停用,您可以藉由查詢 sys.dm_tran_persistent_version_store_stats 並檢查persistent_version_store_size_kb
的值來確認版本資訊已移除。 例如:SELECT DB_NAME(database_id), persistent_version_store_size_kb FROM sys.dm_tran_persistent_version_store_stats WHERE database_id = [MyDatabaseID];
當
persistent_version_store_size_kb
的值0
時,您可以重新啟用 ADR,並將 PVS 放在新的檔案群組上。啟用 ADR,並使用下列 T-SQL 命令指定新的 PVS 位置:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
監視 PVS 的大小
在資料庫中啟用 ADR 之後,請監視永續性版本存放區 (PVS) 和 PVS 清除效能的大小。 如需詳細資訊,請參閱 監控和故障排除加速資料庫復原。