日期:2014-05-16  浏览次数:20480 次

为什么无法重建2005/2008数据库日志

曾经有客户发Email给我说数据库日志文件损坏了,有没有办法让数据库上线。因为当时没有备份(备份在这种情况下作用就体现出来了,一定要做备份),所以只能尝试重建日志,通过重建日志将数据库恢复了。

 

但是重建日志功能不是对于所有情况适用用的,要满足两个条件:

·        A clean shutdown of the database.

·        All data files (MDF and NDF) must be available.

 

下面我举个例子无法重建数据库日志:

 

create database B

go

 

USE B

GO

 

--创建测试表

create table TEST(NAMEVARCHAR(20))

 

---创建一个事物但是不Commit

BEGIN TRAN

INSERT INTO testVALUES('KEVIN') 

CHECKPOINT

 

--执行SHUTDOWN关闭SQLSERVER

SHUTDOWN

 

然后将数据库的日志文件删除,这样我们的A数据库就是在事务没有结束的情况下Log损坏了。下面重建日志文件:

 

USE [master]

GO

CREATE DATABASE [B]ON

( FILENAME = N'D:\Program Files\Microsoft SQLServer\MSSQL10_50.R2\MSSQL\DATA\B.mdf')

 FOR  ATTACH_REBUILD_LOG

GO

 

错误信息:

File activation failure. Thephysical file name "D:\Program Files\