指引网

当前位置: 主页 > 数据库 > SQLServer >

无法重建2005/2008数据库日志的原因分析

来源:网络 作者:佚名 点击: 时间:2018-03-13 23:51
[摘要] 无法重建2005/2008数据库日志的原因分析曾经有客户发Email给我说数据库日志文件损坏了,有没有办法让数据库上线。因为当时没有备份(备份在这种情况下作用就体现出来了,一定要做备份),

无法重建2005/2008数据库日志的原因分析   曾经有客户发Email给我说数据库日志文件损坏了,有没有办法让数据库上线。因为当时没有备份(备份在这种情况下作用就体现出来了,一定要做备份),所以只能尝试重建日志,通过重建日志将数据库恢复了。   但是重建日志功能不是对于所有情况适用用的,要满足两个条件: · A clean shutdown of the database. · All data files (MDF and NDF) must be available.    www.2cto.com   下面我举个例子无法重建数据库日志:   create database B go   USE B GO   --创建测试表 create table TEST(NAMEVARCHAR(20))    www.2cto.com   ---创建一个事物但是不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    www.2cto.com   错误信息: 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.   所以重建日志不是万能的。
 
------分隔线----------------------------