SQL Server置疑資料庫解決方案

來源:互聯網
上載者:User
方法一:

  現象:資料庫Log日誌太大了,shrink不掉。於是想把資料庫檔案卸下來,刪除log,再附加上。附加失敗。

  提示錯誤:

  伺服器: 訊息 1813,層級 16,狀態 2,行 1

  未能開啟新資料庫 'metadb'。CREATE DATABASE 將終止。

  裝置啟用錯誤。物理檔案名稱 'd:\metadb.LDF' 可能有誤。

  環境:MSSQL SERVER 2000 企業版

  解決過程:

  1.建一個新庫newdb

  2.停掉資料庫。刪除新庫的log檔案,講metadb.mdf覆蓋newdb.mdf。

  3.啟動資料庫伺服器。資料庫newdb的狀態為“置疑”。

  4. 允許對系統目錄直接修改

use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
update sysdatabases set status=-32768 where dbid=DB_ID('newdb')

  5.重建log


dbcc rebuild_log('newdb','C:\Program Files\Microsoft SQL Server\MSSQL\Data\newdb_log.ldf')

  6.dbcc檢查


dbcc checkdb('newdb')

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


sp_dboption 'newdb','dbo use only','false'

  8 不允許對系統目錄直接修改


sp_configure 'allow updates',0
go
reconfigure with override
go

  方法二:

  解決辦法:   
    
  這是最簡單的辦法是有資料庫的全備份,然後恢複即可。

  步驟:   
    
  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

原文出處:http://hi.baidu.com/genersoft/blog/item/d5fd818b1b25367b9f2fb490.html
相關文章

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.