如何在没有 index.idx 文件的 SQL Server 2008 R2 中附加数据库
Posted
技术标签:
【中文标题】如何在没有 index.idx 文件的 SQL Server 2008 R2 中附加数据库【英文标题】:How to attach database in SQL Server 2008 R2 without index.idx file 【发布时间】:2016-06-18 11:31:55 【问题描述】:我有一个数据库测试(test.mdf
、test_ldf.log
和 test_idx.idx
)。我错误地删除了test_idx.idx
文件,由于文件超过20 GB。
我用过所有类型的恢复软件,但找不到文件。
不幸的是,数据库没有备份,现在 SQL Server 2008 R2 不允许我附加数据库。
有没有什么办法可以在没有索引文件的情况下附加数据库test.mdf
文件?
尝试附加数据库时出错:
无法打开物理文件“.idx”。操作系统错误 2:“2(无法检索此错误的文本。原因:15105)”。 (Microsoft SQL Server,错误:5120)
【问题讨论】:
你在使用快照复制吗? 嗨,Alex,对不起,我不知道快照复制。我正在尝试使用 SQL Server GUI 界面附加数据库。我从未使用过快照发布,我只是尝试过,但它当然没有显示数据库,因为它没有附加...:( 我从未听说过在 SQL Server 中使用扩展名为 .idx 的文件,因此我在互联网上搜索了“idx”文件唯一出现的内容是“快照复制”。我建议您与您的 DBA 讨论此问题。 我也从未听说过 idx 文件。里面有什么?也许它只是一个带有 .idx 扩展名的 NDF 字段 也许吧。只是也许。有人创建了第二个数据文件只是为了保留索引并将扩展名更改为idx
。非常疯狂的想法。如果是真的,那人就生病了。
【参考方案1】:
创建一个具有相同文件结构的虚拟数据库(名称不重要)。即数据文件、日志文件和索引文件。
像这样使索引文件和数据库脱机:
alter database
alter database
您将无法恢复脱机文件(据我所知),因此请不要将其命名为与原始文件相同的逻辑名称 - 您马上就会明白原因。
现在用损坏的数据库中剩下的内容覆盖虚拟数据库文件(显然将副本保存在安全的地方!)
使数据库重新联机
alter database
此时您的数据应该可以访问了。
-
使用与原始索引和重建索引相同的逻辑名称创建新文件组/文件
祝你好运!
【讨论】:
@expertcoder1123 - 你过得怎么样?我的回答是否有助于解决问题?以上是关于如何在没有 index.idx 文件的 SQL Server 2008 R2 中附加数据库的主要内容,如果未能解决你的问题,请参考以下文章