現(xiàn)象:數(shù)據(jù)庫Log日志太大了,shrink不掉。于是想把數(shù)據(jù)庫文件卸下來,刪除log,再附加上。附加失敗。
提示錯誤:
服務(wù)器: 消息 1813,級別 16,狀態(tài) 2,行 1
未能打開新數(shù)據(jù)庫 'metadb'。CREATE DATABASE 將終止。
設(shè)備激活錯誤。物理文件名 'd:\metadb.LDF' 可能有誤。
環(huán)境:MSSQL SERVER 2000 企業(yè)版
解決過程:
1.建一個新庫newdb
2.停掉數(shù)據(jù)庫。刪除新庫的log文件,講metadb.mdf覆蓋newdb.mdf。
3.啟動數(shù)據(jù)庫服務(wù)器。數(shù)據(jù)庫newdb的狀態(tài)為“置疑”。
4. 允許對系統(tǒng)目錄直接修改
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.設(shè)置數(shù)據(jù)庫為正常狀態(tài)
sp_dboption?'newdb','dbo?use?only','false' |
8 不允許對系統(tǒng)目錄直接修改
sp_configure?'allow?updates',0 go reconfigure?with?override go |
方法二:
解決辦法:???
????
這是最簡單的辦法是有數(shù)據(jù)庫的全備份,然后恢復(fù)即可。
步驟:???
????
1. 刪除原始的數(shù)據(jù)庫:??
?USE????MASTER??? ???GO??? ???DROP????DATABASE????DB_SUEPECT?? |
?
????
2.建立同名的數(shù)據(jù)庫:??
??
?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.恢復(fù)數(shù)據(jù)庫:??
?RESTORE????DATABASE????DB_SUSPECT??? ???FROM????DBNAME_BACKUP.DAT??? |
????
4.數(shù)據(jù)庫完整性檢測:??
DBCC????CHECKDB('DB_SUSPECT')??? |
????
5.重新啟動MSSQLSERVER服務(wù).???
????
如果沒有全備份,那就要用一些特殊的方法:???
????
1.設(shè)置數(shù)據(jù)庫為緊急模式??
?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服務(wù):??
NET????STOP????MSSQLSERVER?? |
?
????
3.把原始數(shù)據(jù)庫的數(shù)據(jù)文件DBNAME_DAT.MDF,DBNAME_LOG.LDF移走:???
????
4.啟動SQL?Server服務(wù):??
???NET????START????MSSQLSERVER??? |
????
5.重新建立一個同名的數(shù)據(jù)庫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.設(shè)置數(shù)據(jù)庫運行在單用戶的模式:??
??
?USE????MASTER??? ???GO??? ???ALTER????DATABASE????DB_SUSPECT????SET????SINGLE_USER??? ???GO??? |
????
7.停掉SQL服務(wù):??
?NET????STOP????MSSQLSERVER? |
??
????
8.把原來的數(shù)據(jù)文件再覆蓋回來:???
????
9.啟動SQL??? Server服務(wù):??
?
???
NET????START????MSSQLSERVER? |
??
????
10.重新設(shè)置SQLSERVER的狀態(tài):??
??
?USE????MASTER???
???GO??? ???EXEC????sp_resetstatus????"DB_SUSPECT" |
???
????
11.數(shù)據(jù)庫完整性檢測:??
DBCC????CHECKDB('DB_SUSPECT')??? |
????
12.恢復(fù)數(shù)據(jù)庫為多用戶模式:??
?
??USE????MASTER??? ???GO??? ???ALTER????DATABASE????DB_SUSPECT????SET????MULTI_USER??? ???GO??? ???? |
13.恢復(fù)SQLSERVER原始的配置:??
??
?USE????MATER??? ???? ???GO??? ???? ???UPDATE????sysdatabases????SET????status????=????4194320????where????name????=????'DB_SUSPECT'??? ???GO??? |
????
14.配置SQLSERVER不允許更新系統(tǒng)表:?
??
??
?USE????MASTER???
???GO??? ???sp_configure????'allow????updates',????0??? ???reconfigure????with????override??? ???GO??? |
???
15.重新啟動MSSQLSERVER服務(wù):???
????
最好重新啟動操作系統(tǒng)???
????
16.備份數(shù)據(jù)庫:???
????
可以通過SQLSERVER企業(yè)管理器或T-SQL.需要備份MASTER和DB_SUSPECT
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
