为什么无法重建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\Microsoft SQLServer\MSSQL10_50.R2\MSSQL\DATA\A_log.ldf" may be incorrect.

The log cannot be rebuilt because there were open transactions/users whenthe database was shutdown, no checkpoint occurred to the database, or the database wasread-only. This error could occur if the transaction log file was manuallydeleted or lost due to a hardware or environment failure.

Msg 1813, Level 16, State 2,Line 1

Could not open new database'A'. CREATE DATABASE is aborted.

 

所以重建日志不是万能的。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值