Sql-Server-Express

無法附加 SQL Express DB,無法使用 NOLOCK 繼續掃描

  • May 7, 2020

我們有一個遠端客戶端必須重建他們的伺服器,並且從那時起他們的 SQL Express 數據庫就遇到了問題。不幸的是,我無法遠端連接到該客戶端。我讓他們執行“DBCC CHECKDB”,它顯示其中一張表已損壞。我讓他們複製並將 .mdf 和 .ldf 文件發送給我,這樣我就可以做一些事情來解決這個問題。

我什至無法附加該數據庫。嘗試附加它時出現以下錯誤…

為伺服器“GW1\SQLEXPRESS”附加數據庫失敗。

由於數據移動,無法使用 NOLOCK 繼續掃描。

正在將數據庫“QAData1”從版本 655 轉換為目前版本 782

。…

數據庫“QAData1”正在執行從版本 690 到版本 691 的升級步驟。(Microsoft SQL Server,錯誤:601)

知道如何解決這個錯誤,或者我可以從哪裡獲得更好的錯誤資訊?

如果我無法附加 .mdf 文件,有什麼提示可以修復它嗎?

還有其他案例表明,在嘗試附加損壞的數據庫時可能會發生此錯誤。

我建議不要分離數據庫並發送 MDF/LDF 文件,而是要求進行適當的備份並嘗試恢復它。這是一種更安全的複制數據庫的方法。此外,分離可疑或損壞的數據庫特別危險,絕對是您最不想做的事情或建議客戶做的事情。希望客戶端有可以追溯到損壞發生之前的備份(這就是為什麼我們保留的不僅僅是最後一個備份,以及為什麼我們經常測試我們的備份以確保它們可以恢復)。

為了避免所有升級步驟(這可能是導致此失敗的原因),另一種選擇是設置與客戶端具有的 SQL Server 版本(SQL Server 2008)匹配的 SQL Server 實例,因為將其附加到較新的版本會對數據庫進行真正的、不可逆轉的更改。這將避免更改數據庫跳過升級步驟,但如果實際上存在損壞,則不太可能允許附加或恢復數據庫。

順便說一句,一般來說,不要使用 SSMS UI 來附加數據庫……CREATE DATABASE ... FOR ATTACH;在查詢編輯器視窗中編寫命令。UI 有很多不足之處。

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