回覆列表
  • 1 # 使用者9117358402677

    備份資料檔案,然後按下面的步驟處理:

    1.新建一個同名的資料庫(資料檔案與原來的要一致)

    2.再停掉sql server(注意不要分離資料庫)

    3.用原資料庫的資料檔案覆蓋掉這個新建的資料庫

    4.再重啟sql server

    5.此時開啟企業管理器時會出現置疑,先不管,執行下面的語句(注意修改其中的資料庫名)

    6.完成後一般就可以訪問資料庫中的資料了,這時,資料庫本身一般還要問題,解決辦法是,利用

    資料庫的指令碼建立一個新的資料庫,並將資料導進去就行了.

    USE MASTER

    GO

    SP_CONFIGURE "ALLOW UPDATES",1 RECONFIGURE WITH OVERRIDE

    GO

    UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME="置疑的資料庫名"

    Go

    sp_dboption "置疑的資料庫名", "single user", "true"

    Go

    DBCC CHECKDB("置疑的資料庫名")

    Go

    update sysdatabases set status =28 where name="置疑的資料庫名"

    Go

    sp_configure "allow updates", 0 reconfigure with override

    Go

    sp_dboption "置疑的資料庫名", "single user", "false

    假設資料庫為TEST:

    按以下步驟執行

    A.設定資料庫允許直接作業系統表。此操作可以在SQL Server Enterprise Manager裡面選擇資料庫伺服器,按右鍵,選擇“屬性”,在“伺服器設定”頁面中將“允許對系統目錄直接修改”一項選中。也可以使用如下語句來實現。

    use master

    go

    sp_configure "allow updates",1

    go

    reconfigure with override

    go

    B.設定test為緊急修復模式

    update sysdatabases set status=-32768 where dbid=DB_ID("test")

    此時可以在SQL Server Enterprise Manager裡面看到該資料庫處於“只讀\置疑\離線\緊急模式”可以看到資料庫裡面的表,但是僅僅有系統表

    C.下面執行真正的恢復操作,重建資料庫日誌檔案

    dbcc rebuild_log("test","C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf")

    執行過程中,如果遇到下列提示資訊:

    伺服器: 訊息 5030,級別 16,狀態 1,行 1

    未能排它地鎖定資料庫以執行該操作。

    DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。

    說明您的其他程式正在使用該資料庫,如果剛才您在F步驟中使用SQL Server Enterprise Manager打開了test庫的系統表,那麼退出SQL Server Enterprise Manager就可以了。

    正確執行完成的提示應該類似於:

    DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。

    此時開啟在SQL Server Enterprise Manager裡面會看到資料庫的狀態為“只供DBO使用”。此時可以訪問資料庫裡面的使用者表了。

    D.驗證資料庫一致性(可省略)

    dbcc checkdb("test")

    一般執行結果如下:

    CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 "test" 中)。

    DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。

    E.設定資料庫為正常狀態

    sp_dboption "test","dbo use only","false"

    如果沒有出錯,那麼恭喜,現在就可以正常的使用恢復後的資料庫啦。

    F.最後一步,我們要將步驟E中設定的“允許對系統目錄直接修改”一項恢復。因為平時直接作業系統表是一件比較危險的事情。當然,我們可以在SQL Server Enterprise Manager裡面恢復,也可以使用如下語句完成

    sp_configure "allow updates",0

    go

    reconfigure with override

    go

    上面的語句操作步驟有點問題:

    應該如下:

    A.我們使用預設方式建立一個供恢復使用的資料庫(如test)。可以在SQL Server Enterprise Manager裡面建立。

    B.停掉資料庫伺服器。

    D.啟動資料庫伺服器。此時會看到資料庫test的狀態為“置疑”。這時候不能對此資料庫進行任何操作。

    E.設定資料庫允許直接作業系統表。此操作可以在SQL Server Enterprise Manager裡面選擇資料庫伺服器,按右鍵,選擇“屬性”,在“伺服器設定”頁面中將“允許對系統目錄直接修改”一項選中。也可以使用如下語句來實現。

    use master

    go

    sp_configure "allow updates",1

    go

    reconfigure with override

    go

    F.設定test為緊急修復模式

    update sysdatabases set status=-32768 where dbid=DB_ID("test")

    此時可以在SQL Server Enterprise Manager裡面看到該資料庫處於“只讀\置疑\離線\緊急模式”可以看到資料庫裡面的表,但是僅僅有系統表

    G.下面執行真正的恢復操作,重建資料庫日誌檔案

    dbcc rebuild_log("test","C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf")

    執行過程中,如果遇到下列提示資訊:

    伺服器: 訊息 5030,級別 16,狀態 1,行 1

    未能排它地鎖定資料庫以執行該操作。

    DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。

    說明您的其他程式正在使用該資料庫,如果剛才您在F步驟中使用SQL Server Enterprise Manager打開了test庫的系統表,那麼退出SQL Server Enterprise Manager就可以了。

    正確執行完成的提示應該類似於:

    DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。

    此時開啟在SQL Server Enterprise Manager裡面會看到資料庫的狀態為“只供DBO使用”。此時可以訪問資料庫裡面的使用者表了。

    H.驗證資料庫一致性(可省略)

    dbcc checkdb("test")

    一般執行結果如下:

    CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 "test" 中)。

    DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。

    I.設定資料庫為正常狀態

    sp_dboption "test","dbo use only","false"

    如果沒有出錯,那麼恭喜,現在就可以正常的使用恢復後的資料庫啦。

    J.最後一步,我們要將步驟E中設定的“允許對系統目錄直接修改”一項恢復。因為平時直接作業系統表是一件比較危險的事情。當然,我們可以在SQL Server Enterprise Manager裡面恢復,也可以使用如下語句完成

    sp_configure "allow updates",0

    go

    reconfigure with override

    go

  • 2 # dadazhu2

    網上各種方法都用了沒成功

    我來介紹下我的方法吧可能你的情況與我一樣

    我SQL2000安裝在C盤,資料庫檔案在D盤。

    我就把D盤檔案複製到,C:\Program Files\MSQL\DATA\放這裡。這裡全是資料庫系統庫,具體路徑請根據自己情況。

    然後重啟服務-附加就好了。

    之後再分離,再把C盤的資料庫原始檔剪下走貼上到非C盤,再重新附加即可。

  • 中秋節和大豐收的關聯?
  • 格倫·古爾德的社會評價?