删除 NDF 文件后附加数据库时出错

M.S*_*yak 2 sql-server-2008 dbcc

我错误地从 SQL Server 2008 数据库中删除了 .ndf 文件。在尝试附加以前的副本时,SSMS 会引发此错误:

服务器“MDSWIN34”的附加数据库失败。(Microsoft.SqlServer.Smo)


附加信息:

执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)


操作系统在读取文件“C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\template.ndf”中偏移量 0000000000000000 的过程中向 SQL Server 返回错误 38(到达文件末尾。)。SQL Server 错误日志和系统事件日志中的其他消息可能会提供更多详细信息。这是一种严重的系统级错误情况,会威胁数据库的完整性,必须立即纠正。完成完整的数据库一致性检查 (DBCC CHECKDB)。此错误可能由多种因素引起;有关详细信息,请参阅 SQL Server 联机丛书。(Microsoft SQL Server,错误:823)

这是什么原因?我丢失了所有数据吗?

Aar*_*and 7

根据您目前提供的所有信息,我不得不说,是的,您已经丢失了所有数据。从这听起来,我只能猜测发生了这样的事情:

  • 你的磁盘已满
  • 你看到了这个大.ndf文件
  • 你试图删除它(大概是因为你没有意识到它是一个辅助数据文件)
  • 你不能删除它,因为它正在被使用
  • 您停止了 SQL Server(或分离了数据库)
  • 现在你可以删除文件了 - 是吗?

问题是,该.ndf文件是数据库的关键部分。您不可能在不分离数据库或关闭 SQL Server 的情况下删除它的事实应该是一个线索。

自从添加.ndf文件以来,您是否没有对该数据库进行任何备份?最好是尽可能接近您删除文件的那一点?

现在,如果您没有数据库备份(或.ndf在干净分离后处于一致状态的和所有其他文件的简单文件副本),则可能不会失去所有希望。您可以使用某种取消删除软件或将其带到数据恢复服务处来恢复文件。前提是文件在磁盘上的位置没有被清零、格式化或重新占用。您可能会很幸运,但很可能您在这里所做的事情与将甜甜圈掉入马桶基本相同。您也许能够取回它的一部分,但您仍然可能不想要它。

不幸的是,这被称为了解备份为何如此重要,这是一种艰难的方式。并且还可以很好地警告其他人,如果他们不知道它们的用途,就不应该删除系统上的文件。

  • 喜欢你的回答。 (3认同)
  • 是的!... **我没有意识到这是一个辅助数据文件**。现在我看到你在 6 个步骤中描述的正确假设而笑了...... (2认同)