Sql-Server
如何判斷備份文件是否包含 CDC?
使用 SQL Server 2008 到 2014 年,我知道如何在啟用更改數據擷取 (CDC) 的情況下備份和恢復數據庫,但我正在尋找一種查詢完整備份文件以確定它是否包含 CDC 數據的方法。
像
RESTORE FILELISTONLY
這樣從數據庫中獲取文件列表,而是獲取 CDC 狀態以確定還原是否需要使用 KEEP_CDC 標誌的方法會有什麼好處?有沒有辦法確定備份是否包含 CDC 數據?
謝謝!
(如果有人找到了一種方法——我認為不存在,我會刪除我的答案:-))
有沒有辦法確定備份是否包含 CDC 數據?
我不認為有任何方法可以從備份中知道是否啟用了 CDC。
您可以通過在 DatabaseBackupLSN的結果中使用DatabaseBackupLSN來了解數據庫是否參與複製(在後台使用掃描事務日誌的日誌讀取器代理)
RESTORE HEADERONLY
作為備份時觸發的“檢查點開始”開始。FirstLSN
如果在數據庫空閒且未配置複製時進行備份,則此 LSN 將與此一致。我認為微軟沒有顯示是否啟用了 CDC 的原因也可能是一個安全問題。CDC 是一種企業級技術,可以一直跟踪到列級別的更改。這是 HIPAA、FISMA 等法規所要求的。
SQL Server 使用以下邏輯來確定在還原或附加數據庫後更改數據擷取是否保持啟用:
- 如果將數據庫恢復到具有相同數據庫名稱的同一伺服器,則更改數據擷取保持啟用狀態。
- 如果將數據庫恢復到另一台伺服器,預設情況下會禁用更改數據擷取並刪除所有相關元數據。
- 要保留更改數據擷取,請在恢復數據庫時使用 KEEP_CDC 選項。有關此選項的更多資訊,請參閱 RESTORE。
- 如果數據庫已分離並附加到同一伺服器或另一台伺服器,則更改數據擷取保持啟用狀態。
- 如果使用 KEEP_CDC 選項將數據庫附加或恢復到 Enterprise 以外的任何版本,則操作將被阻止,因為更改數據擷取需要 SQL Server Enterprise。顯示錯誤消息 932:
SQL Server 無法載入數據庫 ‘%.*ls’,因為已啟用更改數據擷取。目前安裝的 SQL Server 版本不支持更改數據擷取。使用支持的 SQL Server 版本禁用數據庫中的更改數據擷取,或者將實例升級到支持更改數據擷取的實例。