我错误地从 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)
这是什么原因?我丢失了所有数据吗?
根据您迄今为止提供的所有信息,我不得不说,是的,您丢失了所有数据。从它的声音来看,我只能猜测发生了这样的事情:
.ndf
文件问题是,该
.ndf
文件是数据库的关键部分。如果不分离数据库或关闭 SQL Server 就不可能删除它,这一事实应该是一个线索。自添加文件以来,您是否没有对该数据库进行任何备份
.ndf
?最好从尽可能接近您删除文件的位置开始?现在,如果您没有数据库备份(或者
.ndf
在干净分离后没有数据库备份和所有其他文件的简单文件副本,并且所有其他文件处于一致状态),则可能不会失去所有希望。您可以使用某种取消删除软件或将其带到数据恢复服务来恢复文件。前提是该文件在磁盘上的位置未被清零、格式化或重新占用。你可能会很幸运,但你在这里所做的很可能与将甜甜圈丢在马桶里一样。你也许可以取回它的一部分,但你可能仍然不想要它。不幸的是,这被称为学习为什么备份很重要,这是一种艰难的方式。并且还可以很好地警告其他人,如果他们不知道它们的用途,他们不应该删除系统上的文件。
错误将指示数据文件(通常是 .MDF 文件)并且可以读取或写入。偏移量是从文件开头的物理字节偏移量。逻辑页通过偏移数除以 8192 得到。
到达文件末尾通常意味着文件已损坏。在这种情况下,它是 TempDB 数据文件 (.mdf),而不是日志文件 (.ldf)。
您可以查看此参考:https ://learn.microsoft.com/en-us/answers/questions/133136/the-operating-system-returned-error-38.html