資料庫損壞情況
資料庫有多個資料檔案及日誌檔案,其中乙個資料檔案損壞丟失,後通過檔案恢復工具恢復出來,但是有錯誤,導致資料庫無法啟動。
修復步驟
1.首先嘗試「附加資料庫」
根據網上的資料,如果資料庫損壞不嚴重的話,可以直接通過「附加資料庫」的方式恢復,但是很不幸,嘗試失敗
不過通過「附加資料庫」得到了一條很重要的資訊,就是當選中主資料檔案mdf後,會將該資料所需的所有檔案依次列出來
並且列出的檔案順序是按照檔案id號排序的,也就是檔案的建立順序顯示的
這就為下一步的操作提供了必要的條件
2. 新建立乙個同名的資料庫,建立資料庫時,按照步驟1中列數的檔名,依次新增資料庫檔案,新增順序要嚴格按照步驟1中列出的檔名順序
檔案的邏輯名稱和物理名稱都要與原資料庫保持一致
3. 停止資料庫服務,將源資料檔案拷貝到新建立的資料庫資料檔案目錄進行覆蓋
4. 重啟資料庫
幸運的話,啟動過後會看到資料庫狀態為:「
可疑」
5. 從「可疑」狀態恢復到可用狀態
依次執行以下命令,恢復資料庫
use master
-- 設定為單使用者狀態
alter database netcasedb set single_user;
go-- 設定為緊急模式
alter database netcasedb set emergency;
go-- 通過自帶的"checkdb"命令修復資料庫,允許丟資料
dbcc checkdb (netcasedb , repair_allow_data_loss) with no_infomsgs;
go -- 恢復成多使用者狀態
alter database netcasedb set multi_user;
go
6. 檢視修復後的資料庫資料
根據資料庫受損程度不同,恢復比也不同,我的實驗恢復出了大概50%的資料。
記一次SQLServer資料庫誤刪資料找回
昨天 同事在本機清理資料庫表時,連線到了生產機,誤刪了二十幾張表,幸好是晚上加班的時候刪除的,生產機上當時是一天一備份,還原備份是最後的策略,最關鍵的還是要找回資料。生產機環境是server2008 r2 sqlserver2012,使用delete語句刪除的表現在開始還原,還原可參考dudu的這篇...
SQL Server資料庫映象的頁面自動修復原理
主庫頁面損壞 映象庫頁面損壞 lsn用來保證事務的時序 lsn儲存在每個資料頁面的頁頭 在同一臺機器,記憶體中的資料頁和磁碟中的資料頁保持同步依靠的是資料頁頭的lsn和事務日誌ldf檔案裡的lsn 當跨機器的時候,記憶體中的資料頁頭的lsn,主庫的ldf檔案,映象庫的ldf檔案,那麼在這三者就搭起了...
一次sql server實戰
前言 朋友在做授權專案的時候,遇到乙個sql server資料庫的注入點,沒辦法解決,讓我幫忙看看,因為是授權專案,所以就可以幫助測試下。內容如下 單引號,很明顯的錯誤,因為是時間格式 2020 6 2,所以這裡肯定是字元型的。接著測試 還是語法錯誤,那麼可能因為有括號的原因,接著測試 這裡出現了關...