日期:2014-05-16 浏览次数:20457 次
曾经有客户发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\