sql server mdf文件損壞了如何進行數據庫修復
廣告:
你已經將數據庫分離出來了,但是日志文件太大,大到你沒有多余的空間干別的;現在你將日志文件直接刪除了,
咱開始新建一個同名數據庫,修改數據庫為緊急模式;把SQL server服務停掉;用原來的數據庫mdf文件把這個同名的mdf文件覆蓋掉
啟動SQL server服務,執行代碼塊:單用戶模式---->分析數據庫--->撤銷單用戶----->重啟SQL server服務------>完成
設為緊急模式
ALTER DATABASE yourdbname SET EMERGENCY
或者
update sysdatabases set status = -32768 where name = 'test'
--可能會提示:不允許對系統目錄進行即席更新。
go
ALTER DATABASE yourdbname SET SINGLE_USER
或者
sp_dboption 'test', 'single user', 'true'
dbcc checkdb('test') 驗證數據一致性
dbcc checkdb('test') with no_infomsgs --只顯示錯誤信息
DBCC CHECKDB ('test', REPAIR_FAST) --未處理修復語句。當數據庫處于緊急模式下時,不支持此級別的修復。
dbcc checkdb('test',REPAIR_REBUILD) --未處理修復語句。當數據庫處于緊急模式下時,不支持此級別的修復。
DBCC CheckDB ('test', REPAIR_ALLOW_DATA_LOSS) --支持緊急模式下修復
ALTER DATABASE yourdbname SET MULTI_USER
或者
sp_dboption 'test','dbo use only','false' --設置數據庫為正常狀態
或者
sp_dboption 'test','single user','false'------撤銷單用戶模式
恢復掛起---變為緊急模式----關閉服務---刪掉日志文件
---啟動服務---重新生成日志文件
alter database [test] Rebuild Log on(name=test_log,filename='D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\test_log.LDF')
--重新生成LDF的日志文件
或者
dbcc rebuild_log('test','D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\test_log.LDF')
--重新生成LDF的日志文件
備注:
1 替換mdf文件后,sql server日志提示(打開企業管理器會跳出對話框提示,后臺也會記錄):
一個或多個文件與數據庫的主文件不匹配。如果是嘗試附加數據庫,請使用正確的文件重試該操作。如果這是現有數據庫,則文件可能已損壞,應該從備份進行還原。(Microsoft SQL Server,錯誤: 5173) --表示mdf文件已被替換
2 需要重新打開企業管理器(ssms)會提示恢復掛起
或者在單用戶模式下,分離數據庫,再附加數據庫(附加時只選mdf文件,不選ldf文件),也可以解決。
廣告: