sun*_*eth 6 sql-server-2008 sql-server
我们的 SQL Server 2008 数据库之一遇到了问题。其数据文件中的某些内容似乎已损坏,这导致我们的日常数据库备份作业失败。上一次成功备份是在一个月前 :(
幸运的是,数据库已启动并正在运行,并且应用程序能够连接到它。唯一的问题是它不允许再备份数据库。
当我尝试进行备份时,它给了我"Read on e:\xxx\xyz.mdf file failed. reason 15105"
错误。
我已经停止了 SQL 服务器服务并尝试手动复制 mdf 和 ldf 文件,但系统不允许我们复制 mdf 文件。它给出了“无法从磁盘读取”错误
我已经运行DBCC CHECKDB
命令来检查错误,下面是结果
1) 无法读取和锁存页 (1:43515),锁存类型为 SH。23(无法检索此错误的文本。原因:15105)失败。
2) 对象 ID 567673070,索引 ID 1,分区 ID 72057595461697536,分配单元 ID 72057595536211968(类型行内数据):在 ID 为 1788936192 的行外数据中发现错误:R25 由数据记录标识:R24 ID = 201 )
我正在考虑运行DBCC
命令,REPAIR_ALLOW_DATA_LOSS
但我真的很害怕丢失数据。如果出现严重问题,我们甚至没有最近的备份副本可以恢复。拥有生产数据库而无法对其进行备份对我们来说是一个巨大的风险。
在不丢失数据的情况下修复损坏的数据文件的最佳方法是什么?你推荐任何第三方工具吗?
有没有其他方法可以在开始修复之前备份/获取此数据库的副本?
鉴于您可以连接到数据库,您实际上可能处于良好状态。您可以使用多种可能有效的方法,但这里是一种。
最好在另一个磁盘上创建一个新数据库,因为您的磁盘可能已损坏。
使用生成脚本为现有数据库生成脚本。包括所有数据库对象和权限。
在新数据库上运行脚本以创建您需要的所有结构。
手动或通过工具(例如导入/导出向导)将损坏数据库上每个表的数据复制到新数据库中。不幸的是,这是最有可能出现问题的步骤。如果您确实遇到问题,那么问题可能只是少数记录,您可以使用导入/导出向导生成 SSIS 包并更改该特定表的错误设置以忽略故障。
不管怎样,完成后请进行备份。(当然)
归档时间: |
|
查看次数: |
5515 次 |
最近记录: |