none
還原LOG時有時會發生錯誤『無法重做記錄檔資料錄』 RRS feed

  • 一般討論

  • 各位先進您好:

    想請教一下:

    我將客戶的資料庫備份檔(完整備份)備回公司還原,還原時用 recovery 參數,讓公司的資料庫可以繼續接收客戶端傳來的LOG備份檔來繼續還原

    但有幾次會出現以下錯誤:

    無法重做記錄檔資料錄 (632275:229:4),交易識別碼 (0:236230385),於分頁 (1:1022470),資料庫 Sabt (73)。分頁: LSN = (632065:407:4),類型 = 16。記錄檔: OpCode = 17,內容 24,PrevPageLSN: (632072:129:3)。"

    此LOG檔的上一個備份檔是可以正常還原的,檢查客戶端的SQL Server記錄檔,此LOG備份與上一個LOG備份之間,也沒有出現任何異常紀錄

    但就是無法還原回去

    而且資料庫一直顯示『還原中』

    而不是『待命/唯讀』

    (之前還原LOG後會變回待命唯讀,直到下一個LOG來還原時才會變成還原中狀態)

    請問有哪些原因會造成此問題呢?

    之前每次發生此問題我只好在去客戶端抓一次完整備份檔,來重新開始 log shipping

    我的環境如下:

    windows server 2003 R2

    SQL Server 2000 SP4  & SQL Server 2005 SP2

    (一家客戶是2000一家是2005,都遇過此問題)

     

    謝謝!

     

    小腸

    99.10.30

     

     

    2010年10月30日 上午 05:14

所有回覆

  • Can't use recovery option in this case, check standby option in books online.
    2010年10月31日 上午 12:10
  • 謝謝rmiao的回覆,我發問的問題有個地方講錯了,我使用的是 norecovery ,不好意思

    第一次還原完整備份時,我選擇 norecovery ,讓他可以接受繼續的 LOG 還原,還原 log 時,也是使用 norecovery ,一直都是成功的,只是『有時候』會出現錯誤『無法重做記錄檔資料錄 (632275:229:4),交易識別碼 (0:236230385),於分頁 (1:1022470),資料庫 Sabt (73)。分頁: LSN = (632065:407:4),類型 = 16。記錄檔: OpCode = 17,內容 24,PrevPageLSN: (632072:129:3)。"』

    以下是我還原第一個完整備份  時的語法

    RESTORE DATABASE [DB] FROM  DISK = N'F:\bak\db_200711301300.BAK' WITH  FILE = 1, 
    MOVE N'db_Data' TO N'D:\data\db.mdf', 
    MOVE N'db_Log' TO N'D:\data\db.ldf', 
    NORECOVERY,  NOUNLOAD,  STATS = 10
    GO

     

    以下是我每次收到LOG備份檔時還原的語法

    RESTORE LOG [DB] FROM  DISK = N'F:\bak\log_200711301301.BAK'
    WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 10
    GO

     

    就是說100次裡的LOG還原,會有一次出現該錯誤...

    請問有何原因或是有何可以預防的呢?

     

    謝謝

     

    小腸

    99.10.31


    2010年10月31日 上午 02:11
  • Sounds that log is not in right sequence, you may missing a log backup file.
    2010年10月31日 下午 04:08
  • 謝謝rmiao的回覆

    此點我有檢查過了,檢視SQL Server記錄檔的,裡面會列出SQL的紀錄,例如幾點幾分備份LOG或備份DB

    我確定有問題無法還原的那個LOG的上一個LOG,是有正常還原的喔

    而且如果是中間有遺失LOG的話,那這份LOG的還原錯誤是應該是『這個備份集的記錄檔開始於 LSN 90138000000005500001,要套用至資料庫已經太遲。請改用較早期且含有 LSN 89629000000032100001 的記錄檔備份進行還原。』這種的訊息。

    謝謝!

     

     

     

     

    2010年11月2日 上午 07:24
  • Do you have error number or code?
    2010年11月2日 下午 01:33
  • 以下是在SSMS執行的語法:

    use master
    RESTORE LOG cust FROM  DISK = N'E:\異地備份\RECOVERY\cust\cust_2000_log_201011020129_0003.BAK'
    WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 10
    GO


    以下是執行後出現的訊息:

    10 百分比 restored。
    20 百分比 restored。
    30 百分比 restored。
    40 百分比 restored。
    50 百分比 restored。
    60 百分比 restored。
    70 百分比 restored。
    80 百分比 restored。
    90 百分比 restored。
    100 百分比 restored。
    為資料庫 'cust',檔案 'cust_Log' 於檔案 1 處理了 8085 頁。
    訊息 3013,層級 16,狀態 1,行 2
    RESTORE LOG 異常中止中。
    訊息 3456,層級 21,狀態 1,行 2
    無法重做記錄檔資料錄 (633442:16:1),交易識別碼 (0:236909212),於分頁 (1:1022470),資料庫 'cust' (5)。分頁: LSN = (633202:574:1),類型 = 16。記錄檔: OpCode = 17,內容 24,PrevPageLSN: (633257:467:5)。
    訊息 3456,層級 21,狀態 1,行 2
    Could not redo log record (633442:16:1), for transaction ID (0:236909212), on page (1:1022470), database 'cust' (5). Page: LSN = (633202:574:1), type = 16. Log: OpCode = 17, context 24, PrevPageLSN: (633257:467:5).

     

    謝謝!!

     

    小腸

    99.11.2

    2010年11月2日 下午 02:04
  • Maybe bug, try install latest sql2k5 service pack. 
    2010年11月3日 上午 03:37
  • 嘗試檢查該資料庫中所有物件的邏輯完整性和實體完整性:
    USE Sabt;
    GO
    DBCC CHECKDB;
    GO
    



    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    2010年11月4日 上午 09:08
    版主
  • 謝謝 Alex 的回覆 !

    這點我也做過了

    在客戶的來源端與公司的還原端都做過了 dbcc checkdb 的動作

    都沒有檢查出錯誤

     

    麻煩各位先進再給我一些意見,謝謝大家!

     

    小腸

    99.11.4

    2010年11月4日 下午 01:31
  • Possible to install sql2k5 sp3?
    2010年11月5日 上午 01:38
  • 很感謝rmiao一直幫忙想辦法~

    不好意思,其實我不太敢幫客戶(SQL 2005)升級到SP3,如果有機會的話,我會建議他們換SQL 2008,

    因為我之前有在2家SQL 2005的客戶升級到SP3時,升級完,重開機,就再也開不了機了的情況

    (畫面一片黑,進不去安全模式)

    當然不是每一台,當時沒有機會排除原因(因為機器急著要上線),所以當時是馬上重灌,然後SQL 2005裝到SP2

    所以此方案針對目前遇到此問題暫不考慮。

    只是我最近有一個想法,想請問各位先進有無可能?

    假設有程式,在半夜一點的時候,對資料庫裡的部分TABLE作大量的結轉運算的動作

    而例如1點15分的時候(或是在結轉程式還沒結束前)作LOG備份

    是不是有可能這個LOG會有異常的狀態出現呢?

    我目前是先修改備份LOG的程式,在固定時間不做LOG備份,目前已經3天了,還沒出現該問題。

    不知道有沒有可能是這個原因?

    (不過這家是SQL 2000 SP4)

     

    謝謝!

     

    小腸

    99.11.5

    2010年11月5日 下午 12:35
  • That shouldn't be the case because log backup truncates committed transactions only.
    2010年11月5日 下午 01:21
  • 恩,100 % 確定沒有做 truncate log 的動作
    2010年11月5日 下午 01:28
  • 2010年11月8日 下午 04:50
  • 如果可以的話,建議您花錢向微軟專業的技術支援團隊尋求協助,聯絡方法就在我的簽名檔中。


    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    2010年11月14日 上午 05:18
    版主
  • 謝謝各位先進協助以及提供意見

    我最近改寫備份客戶端時,先判斷若有程式在結轉資料時先不備份LOG,持續到今天觀察約10天,在公司還原LOG時還未出現該問題

    我想先觀察看看,若之後還是出現該錯誤無法還原LOG,我會將資料保存並聯絡微軟

    謝謝大家!

     

     

    小腸

    99.11.15

    2010年11月14日 下午 05:37