本文涵蓋從 SQL Server 執行個體鏡像資料庫的自動重新植入。
在某些情況下,鏡像至 Fabric 的延遲可能會導致交易記錄檔使用量增加。 這是因為在已認可的變更複寫至鏡像資料庫之前,無法截斷交易記錄檔。 一旦交易記錄大小達到其定義的上限,寫入資料庫就會失敗。 若要防止作業資料庫因關鍵 OLTP 交易而出現寫入失敗,您可以設定自動再生機制,允許截斷交易日誌,並將資料庫鏡像重新初始化至 Fabric。
重置會停止從鏡像資料庫到 Microsoft Fabric 的交易流動,並在目前狀態重新初始化鏡像。 這牽涉到產生設定為鏡像的資料表的新初始快照,並將其複製至 Microsoft Fabric。 快照之後,增量更新會被同步。
在重新植入期間,Microsoft Fabric 中的鏡像資料庫專案可供使用,但在重新植入完成之前不會收到累加變更。
reseed_state中的sys.sp_help_change_feed_settings欄指出重新植入狀態。
SQL Server 2025 預設關閉自動重新種子功能,請參見 啟用自動重新種子。 自動重新植入功能已啟用,且無法在 Azure SQL 資料庫和 Azure SQL 受控執行個體中管理或停用。
在 Fabric 鏡像中,會監視來源 SQL 資料庫交易記錄。 只有在下列三個條件成立時,才會觸發自動重新植入:
- 交易日誌超過
@autoreseedthreshold百分比已滿,例如70。 在 SQL Server 上,當您啟用此功能時,使用 sys.sp_change_feed_configure_parameters 來設定此值。 - 日誌重複使用原因為
REPLICATION。 - 因為記錄重複使用等候可能會因其他功能(例如交易複寫或 CDC)而被提升,只有當
REPLICATION= 1 時sys.databases.is_data_lake_replication_enabled才會進行自動重播。 此值由 Fabric Mirroring 設定。
Diagnose
若要識別 Fabric 鏡映是否阻止鏡映資料庫的日誌截斷,請檢查 log_reuse_wait_desc 系統型錄視圖中的 sys.databases 直欄,以查看原因是否為 REPLICATION。 如需瞭解日誌重用等待類型的詳細資訊,請參閱 延遲交易日誌截斷的因素。 例如:
SELECT [name], log_reuse_wait_desc
FROM sys.databases
WHERE is_data_lake_replication_enabled = 1;
如果查詢顯示 REPLICATION 日誌重複使用等待類型,則由於 Fabric 鏡像,交易日誌無法清空已提交的交易,並且會繼續填滿。
使用下列 T-SQL 腳本來檢查記錄空間總計,以及目前的記錄使用量和可用空間:
USE <Mirrored database name>
GO
--initialize variables
DECLARE @total_log_size bigint = 0;
DECLARE @used_log_size bigint = 0;
DECLARE @size int;
DECLARE @max_size int;
DECLARE @growth int;
--retrieve total log space based on number of log files and growth settings for the database
DECLARE sdf CURSOR
FOR
SELECT SIZE*1.0*8192/1024/1024 AS [size in MB],
max_size*1.0*8192/1024/1024 AS [max size in MB],
growth
FROM sys.database_files
WHERE TYPE = 1
OPEN sdf
FETCH NEXT FROM sdf INTO @size,
@max_size,
@growth
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @total_log_size = @total_log_size +
CASE @growth
WHEN 0 THEN @size
ELSE @max_size
END
FETCH NEXT FROM sdf INTO @size,
@max_size,
@growth
END
CLOSE sdf;
DEALLOCATE sdf;
--current log space usage
SELECT @used_log_size = used_log_space_in_bytes*1.0/1024/1024
FROM sys.dm_db_log_space_usage;
-- log space used in percent
SELECT @used_log_size AS [used log space in MB],
@total_log_size AS [total log space in MB],
@used_log_size/@total_log_size AS [used log space in percentage];
啟用自動重新植入
如果先前 T-SQL 腳本傳回的日誌使用量接近已滿(例如,大於 70%),請考慮使用 sys.sp_change_feed_configure_parameters 系統預存程序啟用鏡像資料庫以自動重新植入。 例如,若要啟用自動重新覆寫功能:
USE <Mirrored database name>
GO
EXECUTE sys.sp_change_feed_configure_parameters
@autoreseed = 1
, @autoreseedthreshold = 70;
如需詳細資訊,請參閱 sys.sp_change_feed_configure_parameters。
在來源資料庫中,重新初始化應該釋放鏡像占用的交易記錄檔案空間。 在來源 SQL Server 資料庫上發出手動 CHECKPOINT,如果 REPLICATION 保留原因仍然是由於鏡像,則強制釋放記錄空間。 如需相關資訊,請參閱 檢查點 (Transact-SQL)。
手動重新播種
最佳實務是,您可以使用下列預存程序測試特定資料庫的手動重新植入,以在開啟自動重新植入功能之前瞭解影響。
USE <Mirrored database name>
GO
EXECUTE sp_change_feed_reseed_db_init @is_init_needed = 1;
如需詳細資訊,請參閱 sys.sp_change_feed_reseed_db_init。
檢查是否已觸發重新植入
reseed_state在來源 SQL 資料庫中系統預存程序sys.sp_help_change_feed_settings的欄位指出其目前的重新設置狀態。-
0= 一般。 -
1= 資料庫已開始重新初始化至 Fabric 的程式。 過渡狀態。 -
2= 資料庫正在重新初始化為 Fabric,並等待複寫重新啟動。 過渡狀態。 建立複寫時,重新植入狀態會移至0。
如需詳細資訊,請參閱 sys.sp_help_change_feed_settings。
-
資料庫中啟用鏡像的所有資料表,其
7中的state欄位值都會是sys.sp_help_change_feed_table。如需詳細資訊,請參閱 sys.sp_help_change_feed_table。