Sql-Server-2008

刪除 NDF 文件後附加數據庫時出錯

  • April 9, 2021

我錯誤地從 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文件
  • 你試圖刪除它(大概是因為你沒有意識到它是一個輔助數據文件)
  • 您無法刪除它,因為它正在使用中
  • 您停止了 SQL Server(或分離了數據庫)
  • 現在你可以刪除文件了——是嗎?

問題是,該.ndf文件是數據庫的關鍵部分。如果不分離數據庫或關閉 SQL Server 就不可能刪除它,這一事實應該是一個線索。

自添加文件以來,您是否沒有對該數據庫進行任何備份.ndf?最好從盡可能接近您刪除文件的位置開始?

現在,如果您沒有數據庫備份(或者.ndf在乾淨分離後沒有數據庫備份和所有其他文件的簡單文件副本,並且所有其他文件處於一致狀態),則可能並非所有希望都失去了。您可以使用某種取消刪除軟體或將其帶到數據恢復服務來恢復文件。前提是該文件在磁碟上的位置未被清零、格式化或重新佔用。你可能會很幸運,但你在這裡所做的很可能與將甜甜圈丟在馬桶裡一樣。你也許可以取回它的一部分,但你可能仍然不想要它。

不幸的是,這被稱為學習為什麼備份很重要,這是一種艱難的方式。並且還可以很好地警告其他人,如果他們不知道它們的用途,他們不應該刪除系統上的文件。

引用自:https://dba.stackexchange.com/questions/13908