一次SQLServer資料庫修復經歷

2021-07-16 05:20:02 字數 1171 閱讀 7761

資料庫損壞情況

資料庫有多個資料檔案及日誌檔案,其中乙個資料檔案損壞丟失,後通過檔案恢復工具恢復出來,但是有錯誤,導致資料庫無法啟動。

修復步驟

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,所以這裡肯定是字元型的。接著測試 還是語法錯誤,那麼可能因為有括號的原因,接著測試 這裡出現了關...