Sql-Server

數據庫鏡像,“WITH NORECOVERY”

  • February 24, 2022

最近開始實現數據庫鏡像,遇到了一些麻煩。根據Books online,完整的數據庫備份和T-Log backup必須在鏡像實例中恢復WITH NORECOVERY mode

鏡像數據庫必須處於 RESTORING 狀態才能使鏡像工作。準備鏡像數據庫時,必須對每個還原操作使用 RESTORE WITH NORECOVERY。最低限度,您需要使用 NORECOVERY 恢復主體數據庫的完整備份,然後是所有後續日誌備份。

但是當我開始鏡像時,我收到以下異常:

“數據庫“MyDB”無法打開。它正在恢復(Microsoft SQL Server,錯誤 927)

誰能解釋一下,我是否誤解了什麼?

在所有伺服器上創建端點:

CREATE ENDPOINT EndPointName 
STATE=STARTED AS TCP(LISTENER_PORT = PortNumber, LISTENER_IP = ALL) 
FOR DATA_MIRRORING(ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE, 
                  ENCRYPTION = REQUIRED ALGORITHM RC4)

對於見證伺服器,更改ROLE = PARTNERROLE = WITNESS在見證的端點中。

在鏡像伺服器上執行第一SET PARTNER條命令:

ALTER DATABASE DatabaseName SET PARTNER = N'TCP://PrincipalServer:PortNumber'

請注意,它在命令中指向主體伺服器,但您是在鏡像上執行它。

然後在主體伺服器上執行接下來的兩個命令,指向SET PARTNER鏡像:

ALTER DATABASE DatabaseName SET PARTNER = N'TCP://MirrorServer:PortNumber'
ALTER DATABASE DatabaseName SET SAFETY OFF --OFF=async, FULL=sync

如果您要為自動故障轉移設置見證,請使用SET SAFETY FULL上述SET SAFETY OFF命令,然後在主體上執行以下命令:

ALTER DATABASE DatabaseName SET WITNESS = N'TCP://WitnessServer:PortNumber'

請按照以下過程解決問題。如果它是小型數據庫,則不會花費太多時間。

**Note : Below steps are to be followed in Secondary Server Only**
  • 刪除數據庫。

  • 轉到數據文件夾並刪除所有看起來適用於數據庫的 MDF。

  • 轉到日誌文件夾並刪除所有看起來適用於數據庫的 LDF。

  • 使用 NORECOVERY 再次恢復數據庫(主伺服器數據庫的新副本)

  • 使用 NORECOVERY 恢復 T-Log(主伺服器數據庫完整備份後的 T-Log)

  • 配置數據庫鏡像

    • 另外請檢查服務包並嘗試將 sql server 升級到最新版本。

祝你好運!

引用自:https://dba.stackexchange.com/questions/148668