DB一下子正常,一下子又出現「復原中」(In Recovery),要如何是好呢?
前陣子將一個DB Restore後,DB一直重覆在「復原中」(In Recovery)。
動不動就出現如下的訊息,
訊息 922,層級 14,狀態 1,行 1
資料庫 'MyDB' 正在復原。請等候復原完成。
一下子正常,一下子又出現「復原中」(In Recovery),如下圖,
而用DBCC CHECKDB 又沒有發現任何問題,SQL Log也沒有任何的錯誤!
查了網路覺得是Log檔的問題! 看了一下,Log檔有 1G多。
目前小弟測試的方式有2種方式都可以達到讓DB不再一直「復原中」,如下,
1.停SQL Service後將Log檔刪除後,再啟動SQL Service。
2.透過DBCC SHRINKFILE(把log檔縮小一下,居然也可以!),如下
USE [MyDB]
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE [MyDB]
SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE (MyDB_Log, 1000);
GO
-- Reset the database recovery model.
ALTER DATABASE [MyDB]
SET RECOVERY FULL;
GO
之後就不再發生一直重覆在「復原中」的問題。
2013/08/16 補充
昨天晚上參加SQL PASS 聽說Colin講師有談到可使用 CREATE DATABASE ..... FOR ATTACH_REBUILD_LOG 或是 CREATE DATABASE .....FOR ATTACH_FORCE_REBUILD_LOG。
所以今天就把之前有問題的DB備份檔RESTORE上來,然後再Detach之後,使用FOR ATTACH_REBUILD_LOG 也是可以的哦! 如下,
CREATE DATABASE myDB
ON (FILENAME = 'D:\SQLDATA\DATA\myDB.mdf') LOG ON (FILENAME = 'D:\SQLDATA\LOG\myDB.ldf')
FOR ATTACH_REBUILD_LOG
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^