- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
判断数据库损坏.doc
判断数据库损坏:
案例1:
石化软件:曾有一用户SQL SERVER 2000数据库PlanDetail表损坏,Select * 时会报错。
使用“DBCC CHECKDB”命令检查数据库时,正常时的信息如下图:
损坏时报:
使用“DBCC CHECKDB”命令检查数据库时,会有表的错误信息出现。
网上找到的修复方法:
处理这种数据库,分为两个大的步骤:第一步:处理可以访问的数据表1)找出哪些表不可访问,即:sql server系统表中哪些记录损坏;2)用SQL server DTS把能够访问的用户数据表导入一个新的DataBase 。在导库时,不能选折(1)中不能访问的数据表。第二步:处理不可访问的数据表:1)找出系统表中错误记录的ID;2)根据“错误记录的ID”,删除sysobjects、sysindexes、syscolumns 表错误的记录;3)根据“错误记录的ID” ,重建系统表记录;4)重建完毕,如果该表可以访问,那么用DTS单独将此表导入新的DataBase。说明:重建sql server系统表方式不一定会成功,比如由于DISK I/O错误,如果仅仅是保存系统表的磁盘扇区出错,那么重建系统表方式可以挽回数据。 如果保存用户数据表的磁盘扇区出错,那么即使重建系统表也不能解决问题。如果重要的用户数据表无法导库,如:t_Voucher、 IcStockbill、ICSale等,那么可以用用“第二步”中的方法一试。
--默认实例使用
net stop MSSQLSERVER
net start MSSQLSERVER
--SQL2005实例使用
net stop SQL Server (SQL2005)
net start SQL Server (SQL2005)
--设置单用户
sp_dboption PetroChemical,single,true
use master
go
DBCC CHECKDB(PetroChemical),repair_allow_data_loss) --修复
select count(*) from plandetail
sp_dboption PetroChemical,single,false
--CHECKDB 有3个参数:--REPAIR_ALLOW_DATA_LOSS --? 执行由 REPAIR_REBUILD 完成的所有修复,包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象。这些修复可能会导致一些数据丢失。修复操作可以在用户事务下完成以允许用户回滚所做的更改。如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。修复完成后,备份数据库。 --REPAIR_FAST 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢失数据的危险。 --REPAIR_REBUILD 执行由 REPAIR_FAST 完成的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。
案例:????? 某天给客户升级报表,第二天早上,客户打电话来说系统不能打开。初步判断也是数据库启动失败。询问客户也没有修改过机器名,管理员密码。通过VNC连上客户服务器发现,还是MASTER数据库损坏。????? 这时候情况比较复杂,由于是新安装的系统,运行还不满一个月。实施时由于疏忽没有做过任何备份。只能尝试将其他电脑上的master数据文件拷贝过来。我笔记本上的SQLSERVER是desktop版,与服务器上安装的不符。没办法,只能死马当活马医了。压缩,发送,折腾了半个小时才把文件发送到客户服务器上。覆盖... 启动... ,绿色箭头出来了。居然成功了。??????打开企业管理器,这时,客户数据库的属性都变成和我笔记本上的数据库一样了。密码,用户数据库。当然由于部分数据文件不一样,所有的用户数据库都是质疑的。删除不存在的用户数据库,然后附加客户自己的数据库。????? 通常,附加数据库后,系统应该就可以使用了。但没想到的是这个客户数据文件也是损坏的,附加数据库失败。这下恢复过程陷入僵局。虽然数据没用多少天,但库中有关键数据必须恢复。?附加数据库错误提示:?“错误3456:未能恢复日志记录(xxx:xxx:x)事务 ID(0:xxxxx)......等等”???? 怀疑是日志文件损坏,只能寄希望于数据文件没有损坏。删除数据库日志文件,单独附加数据库文件,结果还是失败,报告“日志文件不符”。 ???? 由于远程操作过于缓慢,只能将客户数据文件压缩传回本地,再想办法进行修复。
原创力文档


文档评论(0)