2005的库日志被删除,怎么恢复?

mmxx1983 2008-02-18 08:03:38
正常情况下关闭数据库服务,之后误将一个数据库的日志删除,数据库就此无法访问了,请问大家,我该怎么把数据库恢复回来?谢谢大家
...全文
492 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmxx1983 2008-02-19
  • 打赏
  • 举报
回复
感谢大家,数据库已经恢复,用的是"liangCK"的方法,需要说明的是,他的方法在我的机器上不起作用,提示错误,但在另一台机器上成功修复了数据库日志,两太机器系统和配置样,只是我的机器是sql server 2005(sp2),另一个没有打sp补丁,可能有关系吧,感谢大家的关注.谢谢!
mmxx1983 2008-02-19
  • 打赏
  • 举报
回复
问题是我是没有分离数据库,关闭服务后直接删除的日志,这样就不能附加,并且我的是2005,没有置疑!
-狙击手- 2008-02-18
  • 打赏
  • 举报
回复
单文件附加
中国风 2008-02-18
  • 打赏
  • 举报
回复
按以上方法分离重新附加,正常情况不会出现任何异常
-----------------------
这样乱用..
dbcc checkdb作修复
中国风 2008-02-18
  • 打赏
  • 举报
回复
数据库会显示为置疑。。。
不用理它,分离后,重新附加会自动产生新日志文件。。
------------
如果要找回日志文件,用恢复删除的软件可以找回:
如:R-Studio_v2.0\easyrecoverypro
mmxx1983 2008-02-18
  • 打赏
  • 举报
回复
消息 922,级别 14,状态 1,第 11 行
正在恢复数据库 'Patent_of_China'。请等待恢复操作完成。

查询已完成,但有错误
liangCK 2008-02-18
  • 打赏
  • 举报
回复
 (以下内容源于天极网,但经过相应编辑,以符合我自己看资料的习惯^_^)

由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。

如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息
##########################################################
   设备激活错误。
   物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。
   已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。
##########################################################

  但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。你也许会得到类似下面的错误信息
##########################################################
   服务器: 消息 1813,级别 16,状态 2,行 1
   未能打开新数据库 'test'。CREATE DATABASE 将终止。
   设备激活错误。物理文件名 'd:\test_log.LDF' 可能有误。
##########################################################

当出现以上问题时,恢复的办法如下:
  A.我们使用默认方式建立一个供恢复使用的数据库(数据库名应该与要恢复的数据库相同,如test)。可以在SQL Server Enterprise Manager里面建立。
  B.停掉数据库服务器。
  C.将刚才生成的数据库的日志文件 test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件 test_data.mdf。
  D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。   E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。   use master
  go
  sp_configure 'allow updates',1
  go
  reconfigure with override
  go
  F.设置test为紧急修复模式   update sysdatabases set status=-32768 where dbid=DB_ID('test')
  此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
  G.下面执行真正的恢复操作,重建数据库日志文件   dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')

  执行过程中,如果遇到下列提示信息:
##########################################################
   服务器: 消息 5030,级别 16,状态 1,行 1
   未能排它地锁定数据库以执行该操作。
   DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
##########################################################
  说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
  正确执行完成的提示应该类似于:<
##########################################################
   警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
   DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
##########################################################
  此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
  H.验证数据库一致性(可省略)   dbcc checkdb('test')
 一般执行结果如下:
##########################################################
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
##########################################################
  I.设置数据库为正常状态   sp_dboption 'test','dbo use only','false'
  如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
  J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成   sp_configure 'allow updates',0
  go
  reconfigure with override
  go
liangCK 2008-02-18
  • 打赏
  • 举报
回复
在sql server 2005 数据库中,一次误操作,分离数据库后,直接将日志文件删除掉了,后进行附加出错,无法附加上去,经过如下解决方案,数据库附加成功,操作如下:
第一步:先建立一个同名数据库,停止SQL SERVER2005,将原来的.mdf数据库文件覆盖刚新建的.mdf数据库文件,重新启动数据库。
第三步:在查询分析器中运行如下代码:

alter database 你的.mdf文件名 set emergency '--将数据库设置为紧急状态

use master

declare @databasename varchar(255)

set @databasename='你的.mdf文件名' '--你的.mdf文件文件名

exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)

exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态




以上代码请同时运行,可能会出现“数据库其他多个文件与数据库主文件不匹配....”错误,请多次重试执行以上代码 。
liangCK 2008-02-18
  • 打赏
  • 举报
回复
日志文件没了?.
mdf数据文件还在吧?
本项目是一个基于WEB的试题分析与管理系统,系统由三端构成:教师端、学生端及管理员端。教师用户具有如下功能模块:登录模块、公告信息模块、个人信息模块、课程信息模块、题管理模块、试卷管理模块和成绩统计模块。(1)登录模块:教师可以使用账号和密码登录系统。(2)公告信息模块:教师可以查看由管理员发布的公告。(3)个人信息模块:教师可以修改个人基本信息和登录密码。(4)课程信息模块:教师可以查看自己所有的课程信息。(5)题管理模块:教师可以向试题中添加自己所授课程的试题,并对试题进行管理。(6)试卷管理模块:教师可以添加试卷,可以从试题中抽取一定数量的各种题型的试题组成试卷,并对试卷进行管理。(7)成绩统计模块:教师可以查看学生答题的详细信息和得分。学生用户具有如下功能模块:登录模块、公告信息模块、个人信息模块、课程信息模块、答题模块、查看得分和错题模块。(1)登录模块:学生可以使用账号和密码登录系统。(2)公告信息模块:学生可以查看由管理员发布的公告。(3)个人信息模块:学生可以修改个人基本信息和登录密码。(4)课程信息模块:学生可以查看课程信息。(5)答题模块:学生可以浏览试卷信息并参与答题。(6)查看成绩模块:学生可以查看自己的答题结果、得分。(7)错题分析模块:学生可以查看自己的错题信息。管理员具有如下功能模块:登录模块、公告管理模块、班级管理模块、学生管理模块、教师管理模块、课程管理模块和系统管理模块。(1)登录模块:管理员可以使用账号和密码登录系统。(2)公告管理模块:管理员可以发布系统公告,对系统公告进行修改、删除操作。(3)班级管理模块:管理员可以对班级信息进行管理。(4)学生管理模块:管理员可以添加学生账号,对学生的信息进行管理操作。(5)教师管理模块:管理员可以添加教师账号,对教师的信息进行管理操作。(6)课程管理模块:管理员可以对课程信息进行管理操作。(7)系统管理模块:管理员可以查看登录日志,修改账号的密码。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧