方法一:
現象:資料庫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檢查
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服務:
3.把未經處理資料庫的資料檔案DBNAME_DAT.MDF,DBNAME_LOG.LDF移走:
4.啟動SQL Server服務:
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服務:
8.把原來的資料檔案再覆蓋回來:
9.啟動SQL Server服務:
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