sql server mdf文件頁面結構,sql server 文件修復
瀏覽量: 次 發布日期:2018-10-06 19:27:59
在數據庫的頭96個字節中第0x40開始直道0x5F應該都是0。
我發現只有測試頁的m_pageId 的冒號前面的數字不為1時才在0x40到0x5f寫入數據。但是具體代表什么還沒有看出來。
姑且認為數據庫第一個頁面的0x00-0x3f就如上圖所示,0x40-0x5f都為0(不正確的話請糾正一下)
這張圖有什么用呢,如果你理解了上述參數的意義,用二進制編輯器打開一個頭文件損壞的mdf文件就有可能恢復這個已經損壞的數據庫。
偶不是dba也不是專業恢復數據的,只是個普通的開發人員,怎么恢復還請有經驗人士補充一下。
-SQLSERVER的數據頁面結構
在論壇里經常有人問到SQLSERVER是怎麼存放基礎表數據的,既然不想查MSDN,本人就在這里說一下吧
每一行數據在數據頁面里是怎麼存放的?
結構組成:每個SQLSERVER的數據頁面大致分成3個部分:頁頭,頁尾偏移量,數據存儲 這3個部分
假設現在有一個表,表的結構是:
CREATE TABLE test(
a INT,
b INT
)
他在1:100這個頁面上存儲數據(1是數據庫的數據文件ID 亦即是FILEID,100 是PAGEID 頁面編號)。
這個頁面結構大致如下圖

在頁頭部分,會記錄頁面屬性,包括頁面編號等,還會記錄當前頁面空閑部分的起始位置在哪里 www.2cto.com
這樣SQLSERVER在要插入新數據的時候,就能夠很快地找到開始插入的位置,而頁尾的偏移量
記錄了每一條數據行的起始位置。這樣SQLSERVER在找每一條記錄的時候,就能很快找到不會
把前一條記錄和后一條搞混。在圖例這一頁里現在有兩條記錄:(1,100)和(2,200)第一條
記錄的開始位置是96,第二條記錄的開始位置是111,從126開始,是空閑的空間
當頁面里的數據行發生變化的時候,SQLSERVER不但要去修改數據本身,還要修改這些偏移量的值,
以保證SQLSERVER能夠繼續準確地管理數據頁面里的每一行。
. 數據庫的恢復模式有哪些,SQL Server數據庫的恢復模式詳解
. SQL Server 恢復掛起狀態,原因、診斷與解決方法
. sqlserver備份到其他服務器,SQL Server數據庫備份到其他服務器的實用
. 2008數據庫怎么還原數據庫,SQL Server 2008 數據庫還原指南
. sqlserver數據庫恢復掛起狀態,什么是SQL Server數據庫恢復掛起狀態?
. sqlserver數據庫恢復50g大約多少時間,了解SQL Server數據庫恢復
. sql server數據庫顯示恢復掛起,什么是SQL Server數據庫恢復掛起?
. sqlserver數據庫恢復進度,什么是SQL Server數據庫恢復進度?
. sqlserver數據庫恢復步驟,SQL Server數據庫恢復步驟
. sqlserver數據庫恢復數據,什么是SQL Server數據庫恢復數據?
. sqlserver數據庫恢復,什么是SQL Server數據庫恢復?
. sqlserver數據庫恢復掛起什么導致的,什么是SQL Server數據庫恢復掛起
. sqlserver數據庫恢復掛起,什么是SQL Server數據庫恢復掛起?
. sqlserver數據庫恢復工具,什么是SQL Server數據庫恢復工具?
. sqlserver數據庫恢復模式,什么是SQL Server數據庫恢復模式?
. sqlserver數據庫恢復掛起怎么解決,什么是SQL Server數據庫恢復掛起?
. sqlserver誤刪數據庫怎么恢復,什么是SQL Server誤刪數據庫
. 不支持的sql server版本怎么解決,不支持的sql server版本
. MySQL server has gone away,為什么MySQL server