none
(緊急)資料庫無法開啟,資料庫名稱變成「tomwork(有疑問)」 RRS feed

  • 問題

  • 系統 windows server 2003
    資料庫 MS SQL 2005 9.0.2047

     

    資料庫員都正常運作,結果忽然資料庫電腦主機重新自己開機,重新開機後卻發現其中
    有一個資料庫無法開啟,資料庫名稱變成  「tomwork(有疑問)」

     

    我嘗試的要將資料庫卸離,出現以下訊息
    資料庫卸離失敗
    無法卸離被質疑的資料庫,必須先將其修復或卸除,錯誤 3707

     

    我嘗試將資料庫做離線工作,在做線上工作 ,出現以下訊息
    無法重做資料庫 tomwork(資料庫識別碼7)中的頁面(1:19162)上的交易識別碼(0:207785)的
    紀錄(261:2049:2)。頁面LSN(261:1215:29),類型=1。紀錄SurprisePCode = 6,內容2,請重資料
    庫的備份還原或修復資料庫
    ALTER DATABASE 陳述式失敗。(錯誤3456)

     

    LOG

    日期  2007/8/11 下午 12:52:33
    記錄檔  SQL Server (目前的 - 2007/8/11 下午 12:54:00)

    來源  spid57

    訊息
    Could not redo log record (261:2049:2), for transaction ID (0:207785), on page (1:19162), database 'tomwork' (database ID 7). Page: LSN = (261:1215:29), type = 1. Log: OpCode = 6, context 2, PrevPageLSN: (261:1927:28). Restore from a backup of the database, or repair the database.

    請問該問題該如何處理?

     

    我在微軟知識中找到的文章,但是乎沒有太大的幫助
    您可能會收到錯誤訊息當您嘗試還原為 SQL Server 2005 資料庫交易記錄檔3456http://support.microsoft.com/kb/937544/zh-tw
    當您還原交易記錄檔備份在 SQL Server 2000 SP 4 到 SQL Server 2005 的執行個體所產生錯誤訊息: " 3456 Msg, 層級 16, 狀態, 1 Line 1。 無法取消無法復原記錄檔資料錄 」http://support.microsoft.com/kb/926493/zh-tw

    同樣的問題一模一樣的錯誤,請教大家該如何解決?感謝

    2007年8月11日 上午 02:25

解答

  • 資料庫會因為作業系統拒絕存取資料庫資源、一或多個資料庫檔案無法使用或損毀等原因而變成被質疑的狀態。 可以嘗試使用下面的陳述式:

    Code Snippet
    ALTER DATABASE tomwork SET EMERGENCY;
    DBCC checkdb('tomwork');
    ALTER DATABASE tomwork SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DBCC CheckDB ('tomwork', REPAIR_ALLOW_DATA_LOSS);
    ALTER DATABASE tomwork SET MULTI_USER;

     


    其中的 tomwork 是你資料庫的名稱

    2008年7月21日 上午 04:45
    版主

所有回覆

  • 資料庫會因為作業系統拒絕存取資料庫資源、一或多個資料庫檔案無法使用或損毀等原因而變成被質疑的狀態。 可以嘗試使用下面的陳述式:

    Code Snippet
    ALTER DATABASE tomwork SET EMERGENCY;
    DBCC checkdb('tomwork');
    ALTER DATABASE tomwork SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DBCC CheckDB ('tomwork', REPAIR_ALLOW_DATA_LOSS);
    ALTER DATABASE tomwork SET MULTI_USER;

     


    其中的 tomwork 是你資料庫的名稱

    2008年7月21日 上午 04:45
    版主
  • 感謝你的幫忙,目前資料庫已可正常執行了!
    但是因為修復時出現許多以下錯誤,在SELECT TABLE 時,也是出現index 一致性錯誤,有些TABLE 的 INDEX都亂了!請問一下在該如何處理?

     

    CHECKDB 發現了資料表 'tableA' (物件識別碼 46623209) 中 0 個配置錯誤和 675 個一致性錯誤。

     

    再補充一下

    在SELECT時出現的錯誤訊息


    'TableA' 資料表
    - 無法修改資料表。
    LOB 資料類型節點的資料庫識別碼 7、頁 (1:32588)、位置 19 不存在。這種現象通常是因可在資料頁上讀取未認可資料的交易而造成。請執行 DBCC CHECKTABLE。

     

    2008年7月21日 上午 09:13
  • 如果有先前的備份資料,請將備份的資料還原

    如果沒有先前的備份資料,就用 DBCC CheckDB 來進行修復:

    Code Snippet
    ALTER DATABASE tomwork SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DBCC CheckDB ('tomwork', REPAIR_REBUILD);
    ALTER DATABASE tomwork SET MULTI_USER;
     

    2008年7月21日 上午 09:51
    版主
  • 謝謝幫忙!我執行完之後,出現了以下訊息

    訊息 8965,層級 16,狀態 1,行 2
    資料表錯誤: 物件識別碼 1845581613,索引識別碼 1,資料分割識別碼 72057594042777600,配置單位識別碼 71897071097806848 (類型 LOB data)。已在頁面 (1:992),位置 10 中參考頁面 (1:32588),位置 19,文字識別碼 134821183488 的非資料列資料節點,但在掃描時卻找不到。
            DBCC 陳述式的修復層級導致略過此修復。

    訊息 8929,層級 16,狀態 1,行 2
    物件識別碼 1845581613,索引識別碼 1,資料分割識別碼 72057594042777600,配置單位識別碼 72057594049331200 (類型 In-row data): 在由 RID = (1:992:10) 識別的 data 記錄所擁有、識別碼為 134821183488 的非資料列資料中發現錯誤
            DBCC 陳述式的修復層級導致略過此修復。

     

    SELECT 時還是會出現同樣的錯誤訊息,不知還有其他方法可以修復資料ㄇ?
    因為備份的資料約了一個禮拜,所以沒辦法直接給他還原備份!

    2008年7月21日 上午 10:24
  • Tried rebuild all indexes? Ensure you have good backup.

    2008年7月21日 下午 05:47