[SQL]Database Restore後,一直重覆在「復原中」(In Recovery)的問題

  • 16730
  • 0
  • SQL
  • 2013-08-16

DB一下子正常,一下子又出現「復原中」(In Recovery),要如何是好呢?

前陣子將一個DB Restore後,DB一直重覆在「復原中」(In Recovery)。

動不動就出現如下的訊息,
訊息 922,層級 14,狀態 1,行 1
資料庫 'MyDB' 正在復原。請等候復原完成。

 

一下子正常,一下子又出現「復原中」(In Recovery),如下圖,

Recovery

Recovery2

 

而用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:從零開始的軟體開發生活

請大家繼續支持 ^_^