如何附加未正确分离的 .mdf 文件?

Dev*_*she 4 sql-server restore sql-server-express

我们的一个客户在一个不再运行的系统上有一个 SQL Server 2000 数据库。他们不知道数据库中有什么。他们给了我 .mdf 和 .ldf 文件,并希望我们调查和提取信息(如果有)。

我认为备份这些文件时没有正确分离数据库,因为当我尝试将这些文件附加到我的 SQL Server 2008 快速版时出现以下错误:

由于数据移动,无法使用 NOLOCK 继续扫描。正在将数据库“GRMStemp”从版本 539 转换为当前版本 655。数据库“GRMStemp”运行从版本 539 到版本 551 的升级步骤。(Microsoft SQL Server,错误:601)

在这种情况下我该怎么做才能附加数据库?

Aar*_*and 7

听起来数据库已损坏。在进一步操作之前,请复制文件,并且仅使用副本。

您可以尝试以下操作,以防问题与日志隔离:

CREATE DATABASE [GRMStemp]
  ON (FILENAME = 'c:\wherever\MDF_File.mdf')
  FOR ATTACH_REBUILD_LOG;
Run Code Online (Sandbox Code Playgroud)

如果失败,Paul Randal 在 MSDN 上一篇论坛帖子,其中描述了一个可能有效的过程。基本上:

  • 在您的 2008 实例上,创建一个具有完全相同大小的数据文件的数据库(我不会费心尝试将 2000 实例放在任何地方)
  • 关闭 SQL Server
  • 重命名新数据库的 mdf 文件,并将旧文件粘贴到其位置
  • 启动服务器并让数据库尝试恢复,然后进入可疑模式
  • 将数据库置于紧急模式 ALTER DATABASE GRMStemp SET EMERGENCY;
  • 运行DBCC CHECKDB (GRMStemp, REPAIR_ALLOW_DATA_LOSS);这将重建日志并运行完全修复

顺便说一句,如果客户不知道数据库中有什么,并且没有足够的责任来维护正确的备份,那么数据有多重要?