错误3456:未能恢复日志记录 SQL2000数据库置疑解决方法 [转]

错误3456:未能恢复日志记录 SQL2000数据库置疑解决方法
2010-01-12 16:09

SQL2000数据库置疑解决方法
按下面的步骤处理:
1.新建一个同名的数据库
2.再停掉sql server
3.用备份的数据库MDF的文件覆盖掉这个新建的同名数据库文件
4.再重启sql server
5.此时打开企业管理器时新建的同名数据库会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='数据库名'
Go
sp_dboption '数据库名', 'single user', 'true'
Go
DBCC CHECKDB('数据库名')
Go
update sysdatabases set status =28 where name='数据库名'
Go
sp_configure 'allow updates', 0 reconfigure with override
Go
sp_dboption '数据库名', 'single user', 'false'
Go

ok数据能访问了

操作一下发现有部分表不能select不能写入操作错误:“发生错误:-2147467259,未能在数据库 'XXX' 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式”

这时,数据库本身一般还有问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.
企业管理器--右键你的数据库--所有任务--导出数据
--目标标数据库选择新建
--选择"在两个sql数据库之间复制对象和数据"
--把"包含扩展属性"选上,其他的根据需要选择
--最后完成


SQLSERVER数据库文件损坏处理2例
WINDOWS2000
SQLSERVER2000
这段时间遇到了好几起由于数据库文件损坏,而造成客户系统暂停使用的情况。在恢复过程中查阅参考了几篇网上的技术文章,实际操作过后感觉有必要承前启后一下,因此将恢复过程做个记录。
案例1:
客户报告中午正常使用的系统,下午无法打开,报告的是连接数据库错误。电话中初步判断是数据库启动失败。首先告知客户无法立即恢复,先转成手工操作。
到达客户处,首先检查“事件查看器”,发现系统日志文件损坏,事件查看器无法显示系统日志。只能首先删除清空,并重建事件日志文件。然后再启动sqlserver,这时候就可以在事件查看器中看到sqlserver启动失败的错误信息了。错误大概是说 “启动过程中master数据文件损坏,数据库无法恢复”。由于master是系统数据库,因此SQLSERVER无法启动。
此服务器以前曾经发生过windows2000操作系统崩溃,曾经备份过SQLSERVER的 DATA 目录,万幸,把master的两个数据文件覆盖过来(master.mdf,mastlog.ldf)后,数据库就可以启动了。
测试一下,怎么程序还是不能打开,都快出汗了。一看,客户数据库居然是“质疑”的。再看事件查看器有"Disk"错误,连忙找备份,好在管理员在前一天中午做过数据备份。恢复并将数据文件转移到另一个硬盘分区上,至此系统操作正常。至于丢失的一天数据让客户找时间再补入系统。
分析原因:客户表示没有非法关机,停电等故障。因此有可能是硬盘出现坏道,或者是内存品质不良。因此与客户协商,准备先更换一块硬盘,再跟踪使用情况。
案例二:
某天给客户升级报表,第二天早上,客户打电话来说系统不能打开。初步判断也是数据库启动失败。询问客户也没有修改过机器名,管理员密码。通过VNC连上客户服务器发现,还是MASTER数据库损坏。
这时候情况比较复杂,由于是新安装的系统,运行还不满一个月。实施时由于疏忽没有做过任何备份。只能尝试将其他电脑上的master数据文件拷贝过来。我笔记本上的SQLSERVER是desktop版,与服务器上安装的不符。 没办法,只能死马当活马医了。压缩,发送,折腾了半个小时才把文件发送到客户服务器上。覆盖... 启动... ,绿色箭头出来了。居然成功了。
打开企业管理器,这时,客户数据库的属性都变成和我笔记本上的数据库一样了。密码,用户数据库。当然由于部分数据文件不一样,所有的用户数据库都是质疑的。删除不存在的用户数据库,然后附加客户自己的数据库。
通常,附加数据库后,系统应该就可以使用了。但没想到的是这个客户数据文件也是损坏的,附加数据库失败。这下恢复过程陷入僵局。虽然数据没用多少天,但库中有关键数据必须恢复。
附加数据库错误提示:
“错误3456:未能恢复日志记录(***:***:x)事务 ID(0:***xx)......等等”
怀疑是日志文件损坏,只能寄希望于数据文件没有损坏。删除数据库日志文件,单独附加数据库文件,结果还是失败,报告“日志文件不符”。
由于远程操作过于缓慢,只能将客户数据文件压缩传回本地,再想办法进行修复。
首先上网找了几篇丢失数据库日志文件的恢复数据的文章。
http://www.jaron.cn/chs_db/20/20 ... ticle_view_1587.htm
由于数据日志中还有活动事务,文中第一种方法显然不适用我这种情况。遂按照第二种方法将数据库设置为紧急模式。当做到 DBCC CHECKDB 时。结果就与文章表示的不同了。
服务器: 消息 3908,级别 16,状态 1,行 2
未能在数据库 'sttzjg' 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。
此时网上的文章都没有提示找不到进一步的处理方法了。这时直接做DTS数据导出也是报错:DTS Wizard报告说“初始化上下文发生错误”。
不过万幸的是,这时候已经可以SELECT数据了。但有几个表 SELECT的时候报告:
服务器: 消息 601,级别 12,状态 3,行 1
由于数据移动,未能继续以 NOLOCK 方式扫描。
不能使用DTS, 常用的mssql2工具也不行。没有办法了,只能用SELECT手工恢复数据。首先新建一个新的业务数据库new,然后使用 "insert into new.dbo.table select * from *** "一个一个拷贝数据表。化了一个多小时,最后只剩下那三个SELECT也报错的表了。
试试bcp,也报错,不过数据倒是导出来了,这下就好办了。用bcp把能导出的数据导到新库。至此数据库基本恢复。检查报表,发现也是丢失了一天的数据。时间节点上看,大概就是增加报表之后的一天的数据全部丢失, 主要就是那三张SELECT报错的表中。
继续检查事件查看器中的内容,没有发现严重的磁盘错误。开关机的日志也很正常,很奇怪,不知道什么情况会造成一整天的事务日志没有完成,而且还造成master数据库损坏。想不出来原因,还是先给客户设置好每日的数据自动备份。以后再出现这种情况也好处理一些。
总结:我们的客户使用的服务器都很一般,数据库备份相当重要,培训客户做好备份,减少由于系统故障造成的数据损失。


相关推荐

  • 《MS SQL Server 2000管理员手册》系列——9. 建立数据库 9.建立数据库数据库结构系统数据库建立数据库检视数据库删除数据库本章总结当您将MicrosoftSQLServer2000的数据库设计与安装完成后,下一步就可学习如何建立数据库。与早期的版本比较,SQLServer2000的数据库沿用SQL
  • SQL Server 2012/2014数据库高级管理课程(40课时)上海 SQLServer2012/2014数据库高级管理课程(40课时)  课程内容:  1、数据库管理  2、数据库审核  3、数据转换(导入导出数据)  4、数据库复制  5、数据库安全机制  6、数据库备份  7、数据库还原  8、策略管理
  • Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 j Atitit.数据库-----catalog与schema的设计区别以及在实际中使用获取数据库所有库表javajdbcphpc#.Net1.-catalog与schema的设计区别12.获取数据库元信息的几种方法22.1.直接读取元表mys
  • dz2.0 用mysql数据库搬家方法 论坛搬家经过,给大家分享:dz2.0用mysql数据库搬家方法1进入phpmyadmin后台,导出数据库。2到新空间phpmyadmin后台导入数据库。3全新安装dz2.0到同一数据库(安装时修改程序默认的数据库数据表前缀,不然安装不成功)
  • ER-WIN简介 ERwin\ERX 3.0数据库设计工具   ●数据库设计错误将会导致在很长一段时间内不断听到各种抱怨,因此,选择一个适合的数据库开发工具对数据环境进行规范将非常重要  ●提供建造逻辑模型能力,帮助用户区分哪些是概念上的数据库设计?而哪些又是物理上的?  ●在物理数据库的生成和反向
  • oracle 10g闪数据库 1,数据库级闪回启用闪回功能后,数据库会将发生变化的数据块的前镜像写入闪回日志文件中,在进行数据库闪回时,这些数据块可以被直接复制回来以满足数据库的恢复需求,同时redolog可以被应用以辅助数据恢复到更精确的时间点,从而极大地缩短了恢复时
  • 使用PowerDesigner 设计数据库 使用PowerDesigner设计数据库数据库的结构(例如表、关系、视图和触发器)称为数据库模式。可使用SQL语句创建这些元素并按照所需的方式进行排列,但是如果不使用图形工具,则可能会造成混淆。PowerDesigner提供了一种数据库结构
  • bugzilla 导入数据库后,数据库内容显示乱码 因为myql数据库默认存储格式为latin1,但bugzilla3读取数据时是以utf8格式读取,所以对双字节字符易形成乱码?解决方法:1、修bugzilla源码,使其支持中文。2、修改mysql数据库存储格式与数据库默认格式。在这里只介绍
  • Oracle - 逻辑数据库结构 物理结构定义了数据库中的一些实际存在的文件.而文件中数据之间有一定的逻辑关系.所有数据间的关系就叫数据库逻辑结构.逻辑存储结构包括数据块(datablocks),数据扩展(extents),数据段(segments),表空间.这些逻辑结构使
  • 速达5000G-PRO V3.85版 登陆数据库“SA”口令无效 安装SQL2000SERVER数据库时已设置了“SA”密码,,现启动速达5000G-PROV3.85版服务器,要求进行“数据库设置”登陆数据库,输入“SA”密码(口令)却无效,造成速达服务器不能启动。见图1:原因分析:1。速达5000G-P
  • Drupal:Drupal 7 初探——数据库 Drupal:Drupal7初探——数据库转载文章来自Drupal中国站作者:EastDrupal7使用PDO连接数据库,鉴于PHP6将把PDO做为默认数据库连接方式,这是必须的选择。实际上,Drupal7之前的数据库抽象层,和PDO的某些
  • IBM DB2重磅组合拳欲绞杀Oracle 大型数据库迁移五大建议 IBMDB2重磅组合拳欲绞杀Oracle大型数据库迁移五大建议对于大多数公司和DBA来说,数据库的升级、复制和迁移都是一件麻烦的事,而在异构环境下大型数据库的迁移更是一件让DBA头疼不已的事。不仅需要考虑到持续IT投资的回报,迁移本身面临的

你的评论

就没有什么想说的吗?

最新博客

关于我们 移动版

©2017传客网    琼ICP备15003173号-2    

本站部分文章来源于互联网,版权归属于原作者。
本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(weishubao@126.com),我们收到后立即删除。
站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

X