2016-07-23 193 views
3

我在外部硬盤上有SQL Server數據庫。我忘了分開數據庫。我不再需要它了,但我無法刪除或脫機。嘗試刪除SQL Server數據庫時發生錯誤21

當我嘗試刪除或脫機DB時,出現以下錯誤。

消息823,級別24,狀態2,行7

操作系統在 讀期間返回 錯誤21(該設備未準備好。)到SQL Server抵消文件0x00000000012000「E :\肯尼亞航空\莫奈 - Paulus.mdf'。 SQL Server錯誤日誌和系統事件日誌 中的其他消息可能會提供更多詳細信息。這是一個嚴重的系統級錯誤條件 ,威脅數據庫的完整性,必須立即糾正。 完成完整的數據庫一致性檢查(DBCC CHECKDB)。這個錯誤 可能由許多因素引起;有關更多信息,請參閱SQL Server聯機叢書 。

我試圖運行一個DBCC CHECK,但我得到了同樣的錯誤。

+0

您是否在SQL Management Studio中嘗試過,右鍵單擊數據庫,選擇「任務」,然後選擇「分離」? – gofr1

回答

1

嘗試使數據庫脫機然後聯機。

Alter database DatabaseName set offline 

一會兒

Alter database DatabaseName set online 
+0

嗨,如上所述......只要我執行代碼使數據庫脫機,我就會得到相同的錯誤。 –

+0

@PaulusViljoen你可以運行 「DBCC Checkdb with all_errormsgs,no_infomsgs」 並讓我知道你得到了什麼錯誤。 –

+0

@PaulusViljoen運行此「exec xp_fixeddrives」以查看是否顯示所有驅動器。 –

0

我會嘗試SQL中的系統存儲過程sp_detach_db。從fine manual

刪除數據庫將從SQL Server實例中刪除數據庫並刪除數據庫使用的物理磁盤文件。如果 數據庫或其任何一個文件在脫機時處於脫機狀態,則不會刪除磁盤文件 。使用Windows資源管理器可以通過 手動刪除這些文件。要從當前服務器 中刪除數據庫而不刪除文件系統中的文件,請使用 sp_detach_db

操作系統報告的內容與您在問題中所說的內容完全相同:在刪除數據庫時,SQL Server嘗試從不再存在的設備中刪除該文件。因此,根據定義,數據庫不能被「刪除」。但也許它可以分離,因爲它隻影響系統對可用數據庫列表的內部定義。

+0

嗨,我執行sp_detach_db時仍然出現相同的錯誤。 –

0

後,然後將它重新聯機不要試圖對數據庫進行脫機和重新聯機設置 - 這將最終使事情變得更糟。
停止SQL Server - 將相應的數據庫文件(數據和日誌文件)移動到其他位置。再次啓動SQL Server - 最終數據庫將顯示(還原掛起) - 現在從SQL Server中刪除數據庫。然後將數據庫文件重新附加到服務器上,你應該沒問題 - 除非這些文件是物理損壞的。我已經多次看到這個問題 - 特別是在SQL服務器設置爲自動啓動並且在系統重啓之前沒有以協調的方式關閉的虛擬SQL實例。對數據或日誌文件的暫時連接問題可能會導致此問題。如果您的系統顯示此問題多次將SQL Server設置爲手動啓動。

相關問題