如何修複資料庫狀態

來源:互聯網
上載者:User
資料|資料庫
HOW TO FIX SQLSERVER DATABASE SUSPECT?
如何修複資料庫狀態"置疑"?

**********************************************************

Author:黃山光明頂

mail:leimin@jxfw.com

version:1.0.0

date:2004-1-30

(如需轉載,請註明出處!,如果有問題請發MAIL給我:-))

***********************************************************
在MS SQLSERVER中一直有這樣的問題,SQLSERVER的狀態"置疑",我們先來分析一下SQLSERVER資料庫"置疑"的原因:
   1.錯誤的刪除日誌;
   2.硬體(HD)損壞,造成日誌和資料檔案寫錯誤;
   3.硬碟的空間不夠,比如記錄檔過大;


解決辦法:

這是最簡單的辦法是有資料庫的全備份,然後恢複即可.
步驟:

1. 刪除原始的資料庫:
     USE MASTER
     GO 
     DROP DATABASE DB_SUEPECT
    

2.建立同名的資料庫:
        USE master
       GO
       CREATE DATABASE DB_SUSPECT
        ON
         ( NAME = DBNAME_DAT,
           FILENAME = 'C:',
           SIZE = 10,
            FILEGROWTH = 5 )
           LOG ON
          ( NAME = 'DBNAME_LOG',
           FILENAME = 'g:',
           SIZE = 5MB,
           FILEGROWTH = 5MB )
           GO
    

3.恢複資料庫:
      RESTORE DATABASE DB_SUSPECT
     FROM DBNAME_BACKUP.DAT
  

4.資料庫完整性檢測:
       DBCC CHECKDB('DB_SUSPECT')

5.重新啟動MSSQLSERVER服務.

如果沒有全備份,那就要用一些特殊的方法:

1.設定資料庫為緊急模式
       Use Master
       GO
       sp_configure 'allow updates', 1
       reconfigure with override
      GO
      UPDATE sysdatabases SET status = 32768 where name = 'DB_SUSPECT'
      GO

2.停掉SQL Server服務:
     NET STOP MSSQLSERVER

3.把未經處理資料庫的資料檔案DBNAME_DAT.MDF,DBNAME_LOG.LDF移走:

4.啟動SQL Server服務:
      NET START MSSQLSERVER

5.重建立立一個同名的資料庫DB_SUSPECT;

       USE master
       GO
       CREATE DATABASE DB_SUSPECT
        ON
         ( NAME = DBNAME_DAT,
           FILENAME = 'C:',
           SIZE = 10,
            FILEGROWTH = 5 )
           LOG ON
          ( NAME = 'DBNAME_LOG',
           FILENAME = 'g:',
           SIZE = 5MB,
           FILEGROWTH = 5MB )
           GO


6.設定資料庫運行在單使用者的模式:
         USE MASTER
        GO
        ALTER DATABASE DB_SUSPECT SET SINGLE_USER
        GO

7.停掉SQL服務:
     NET STOP MSSQLSERVER

8.把原來的資料檔案再覆蓋回來:


9.啟動SQL Server服務:
      NET START MSSQLSERVER

10.重新設定SQLSERVER的狀態:
         USE MASTER
        GO
        EXEC sp_resetstatus "DB_SUSPECT"

11.資料庫完整性檢測:
        DBCC CHECKDB('DB_SUSPECT')

12.恢複資料庫為多使用者模式:
        USE MASTER
        GO
        ALTER DATABASE DB_SUSPECT SET MULTI_USER
       GO

13.恢複SQLSERVER原始的配置:
      USE MATER

    GO     

    UPDATE sysdatabases SET status = 4194320 where name = 'DB_SUSPECT'
    GO

14.配置SQLSERVER不允許更新系統資料表:
      USE MASTER
     GO
      sp_configure 'allow updates', 0
      reconfigure with override
     GO

15.重新啟動MSSQLSERVER服務:

     最好重新啟動作業系統

16.備份資料庫:

   可以通過SQLSERVER企業管理器或T-SQL.需要備份MASTER和DB_SUSPECT


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。