共用方式為


管理加速資料庫復原

適用於: 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 的位置變更為不同的檔案群組,請遵循下列步驟:

  1. 建立 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];
    
  2. 使用下列 T-SQL 命令停用 ADR:

    ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
    GO
    
  3. 等到所有儲存在 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 放在新的檔案群組上。

  4. 啟用 ADR,並使用下列 T-SQL 命令指定新的 PVS 位置:

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

監視 PVS 的大小

在資料庫中啟用 ADR 之後,請監視永續性版本存放區 (PVS) 和 PVS 清除效能的大小。 如需詳細資訊,請參閱 監控和故障排除加速資料庫復原