****欧欧美毛片4,国产午夜精品视频,97视频在线观看免费视频,久久七国产精品

數據恢復咨詢熱線:400-666-3702??

歡迎訪問南京兆柏數據恢復公司,專業數據恢復15年

兆柏數據恢復公司

?行業新聞

?當前位置: 主頁 > 行業新聞

sql 數據庫文件損壞怎么修復?

瀏覽量: 次 發布日期:2019-11-27 16:52:44

sql 數據庫文件損壞怎么修復?

致MDF文件損壞的其他可能原因還包括:病毒攻擊、硬盤故障、系統異常關機和突然斷電等。
    用DBCC CHECKDB來修復受損MDF文件的步驟
    DBCC CHECK (name_of_corrupt_database, repair_fast)
    注意:您也可以為DBCC CHECKDB定義諸如no_infomsgs和infomsgs的選項參數。
    .MDF文件所在存儲介質的損壞。
    ?4 Text tree page A text page that holds large chunks of LOB values from a single column value.
    .元數據的損壞錯誤。
    .如果用戶將SQL數據庫存儲在一個壓縮的文件夾中,那么MDF文件就可能因此而被損壞。
    DBCC CHECK (name_of_corrupt_database, repair_rebuild)
    -1: 顯示全部IAM頁,數據頁, 索引頁 也包括 LOB 和row-overflow 數據頁。
    SQL數據庫受損的背后原因
    2、即使MDF文件被部分覆蓋,未被覆蓋部分的表數據依然可以恢復
    -2: 顯示全部IAM頁。
    主數據文件是數據庫的起點。除了存儲系統以及用戶數據以外,主數據文件還存儲了數據庫中的所有輔助數據文件以及重做日志文件的路徑、名稱、大小等信息。sql server通過讀取主數據文件得到其他數據文件及重做日志文件的信息,這個功能與Oracle控制文件相似。每個數據庫都有一個主數據文件。主數據文件的推薦文件擴展名是 .mdf。
    1、該程序從硬盤上掃描所有MDF文件碎片并保存為文件
    DBCC CHECK (name_of_corrupt_database, repair_allow_data_loss)
    第三個參數是一個非聚集索引ID或者 1, 0, 1, or 2. 值的含義:
    要找出SQL Server給一個表分配的頁有哪些,要用到非文檔的命令DBCC IND。DBCC IND 命令用于查詢一個存儲對象的內部存儲結構信息,該命令有4個參數, 前3個參數必須指定。它的語法如下:
    第二個參數是數據庫中的對象名或對象ID,對象可以是表或者索引視圖。
    因此,如果MDF文件被損壞,那么SQL數據庫就會變得不可訪問。另外,如果用戶試圖去訪問已損壞的數據庫,則可能會看到一些錯誤提示消息。下面我們列出了一些最常見的錯誤消息:
    DBCC Page ({dbid|dbname},filenum,pagenum[,printopt])
    因此在本文中,我們將和您討論修復受損SQL數據庫的最佳解決方法。不過在開始之前,讓我們先來了解一下SQL數據庫受損的背后原因。
    dbcc page 命令讀取數據頁結構的命令DBCC Page。
    3:輸出緩沖區的標題、頁面標題(分別輸出每一行),以及行偏移量表;每一行
    除主數據文件以外的所有其他數據文件都是次要數據文件,次數據文件一般只存儲用戶數據。某些數據庫可能不含有任何次要數據文件,而有些數據庫則含有多個次要數據文件。次要數據文件的推薦文件擴展名是 .ndf。
    .用戶可能對數據進行錯誤地刪除。
    情況1:如果索引ID>1,則立刻丟棄它、并重新創建。
    ?17 BCM page 有關每個分配單元中自最后一條 BACKUP LOG 語句之后的大容量操作所修改的區的信息
   SQL Server 數據庫具有三種類型的文件
1 主數據文件
    主數據文件是數據庫的起點。除了存儲系統以及用戶數據以外,主數據文件還存儲了數據庫中的所有輔助數據文件以及重做日志文件的路徑、名稱、大小等信息。SQL Server通過讀取主數據文件得到其他數據文件及重做日志文件的信息,這個功能與Oracle控制文件相似。每個數據庫都有一個主數據文件。主數據文件的推薦文件擴展名是 .mdf。
 
2 次要數據文件
    除主數據文件以外的所有其他數據文件都是次要數據文件,次數據文件一般只存儲用戶數據。某些數據庫可能不含有任何次要數據文件,而有些數據庫則含有多個次要數據文件。次要數據文件的推薦文件擴展名是 .ndf。
 
3 日志文件
    日志文件包含著用于恢復數據庫的所有日志信息。每個數據庫必須至少有一個日志文件,當然也可以有多個。日志文件的推薦文件擴展名是 .ldf。
 
    SQL Server 不強制使用 .mdf、.ndf 和 .ldf 文件擴展名,但使用它們有助于標識文件的各種類型和用途。
?? 在 SQL Server 中,數據庫中所有文件的位置都記錄在數據庫的主文件和 master 數據庫中。大多數情況下,SQL Server 數據庫引擎使用 master 數據庫中的文件位置信息。
    在下列情況下,數據庫引擎使用主文件的文件位置信息初始化 master 數據庫中的文件位置項:
    .使用帶有 FOR ATTACH 或 FOR ATTACH_REBUILD_LOG 選項的 CREATE DATABASE 語句來附加數據庫時。
    .從 SQL Server 2000 版或 7.0 版升級時。
    .還原 master 數據庫時。
 
二 數據頁
    SQL Server用8KB 的頁來存儲數據,并且在SQL Server里磁盤 I/O 操作在頁級執行。也就是說,SQL Server 讀取或寫入所有數據頁。頁有不同的類型,像數據頁,GAM,SGAM等。
    SQL Server把數據記錄存在數據頁(Data Page)里。數據記錄是堆表里、聚集索引里葉子節點的行。
    數據頁由3個部分組成。頁頭(標頭),數據區(數據行和可用空間)及行偏移數組。
 
    要找出SQL Server給一個表分配的頁有哪些,要用到非文檔的命令DBCC IND。DBCC IND 命令用于查詢一個存儲對象的內部存儲結構信息,該命令有4個參數, 前3個參數必須指定。它的語法如下:
    第一個參數是數據庫名或數據庫ID。
    第二個參數是數據庫中的對象名或對象ID,對象可以是表或者索引視圖。
    第三個參數是一個非聚集索引ID或者 1, 0, 1, or 2. 值的含義:
 0: 只顯示對象的in-row data頁和 in-row IAM 頁。
 1: 顯示對象的全部頁, 包含IAM 頁, in-row數據頁, LOB 數據頁row-overflow 數據頁 . 如果請求的對象含有聚集所以則索引頁也包括。
 -1: 顯示全部IAM頁,數據頁, 索引頁 也包括 LOB 和row-overflow 數據頁。
 -2: 顯示全部IAM頁。
     Nonclustered index ID:顯示索引的全部 IAM頁, data頁和索引頁,包含LOB和 row-overflow數據頁。
     為了兼容sql server 2000,第四個參數是可選的,該參數用于指定一個分區號.如果不給定值或者給定0, 則顯示全部分區數據。
    和DBCC PAGE不同的是, SQL Server運行DBCC IND不需要開啟3604跟蹤標志.
 
    關于數據庫頁類型如下所示:
?1 Data page 堆表和聚集索引的葉子節點數據
 
?2 Index page 聚集索引的非葉子節點和非聚集索引的所有索引記錄
 
?3 Text mixed page  A text page that holds small chunks of LOB values plus internal parts of text tree. These can be shared between LOB values in the same partition of an index or heap.
 
?4 Text tree page A text page that holds large chunks of LOB values from a single column value.
 
?7 Sort page 排序時所用到的臨時頁,排序中間操作存儲數據用的。
 
?8 GAM page 全局分配映射(Global Allocation Map,GAM)頁面 這些頁面記錄了哪些區已經被分配并用作何種用途。
 
?9 SGAM page 共享全局分配映射(Shared Global Allocation Map,GAM)頁面 這些頁面記錄了哪些區當前被用作混合類型的區,并且這些區需含有至少一個未使用的頁面。
 
?10 IAM page  有關每個分配單元中表或索引所使用的區的信息
 
?11 PFS page  有關頁分配和頁的可用空間的信息
 
?13 boot page 記錄了關于數據庫的信息,僅存于每個數據庫的第9頁
 
?15 file header page 記錄了關于數據庫文件的信息,存于每個數據庫文件的第0頁
 
?16 DCM page 記錄自從上次全備以來的數據改變的頁面,以備差異備份
 
?17 BCM page 有關每個分配單元中自最后一條 BACKUP LOG 語句之后的大容量操作所修改的區的信息
 
三 DBCC命令
現在我們來看看79號類型為1的數據頁里存放的數據,這個就要用到DBCC PAGE命令,它的語法如下:
 
dbcc page 命令讀取數據頁結構的命令DBCC Page。
 該命令為非文檔化的命令,具體如下: 
   DBCC Page ({dbid|dbname},filenum,pagenum[,printopt])
  具體參數描述如下:
   dbid 包含頁面的數據庫ID
  dbname 包含頁面的數據庫的名稱
   filenum 包含頁面的文件編號
   pagenum 文件內的頁面
   printopt 可選的輸出選項;選用其中一個值:
   0:默認值,輸出緩沖區的標題和頁面標題
   1:輸出緩沖區的標題、頁面標題(分別輸出每一行),以及行偏移量表
   2:輸出緩沖區的標題、頁面標題(整體輸出頁面),以及行偏移量表
   3:輸出緩沖區的標題、頁面標題(分別輸出每一行),以及行偏移量表;每一行
   后跟分別列出的它的列值
   要想看到這些輸出的結果,還需要設置DBCC TRACEON(3604)
    1: 顯示對象的全部頁, 包含IAM 頁, in-row數據頁, LOB 數據頁row-overflow 數據頁 . 如果請求的對象含有聚集所以則索引頁也包括。
    至此為確保修復了所有損壞,請再次運行DBCC CHECKDB。如果在name_of_your_corrupt_database中顯示為0個分配錯誤和0個一致性錯誤,則大功告成
    主要用于以下情況:
    另一種可能修復和復原受損SQL數據庫的方式是使用數據庫控制臺命令,例如:DBCC CHECKDB。該命令對于修復SQL Server數據庫中的輕度損壞問題是非常有效的。
    情況2:如果索引ID為0或1,則使用適當的修復選項,如:repair_rebuild、repair_fast或repair_allow_data_loss,來再次運行DBCC CHECKDB。
    要想看到這些輸出的結果,還需要設置DBCC TRACEON(3604)
    二 數據頁
    ?13 boot page 記錄了關于數據庫的信息,僅存于每個數據庫的第9頁
    2 次要數據文件
    3、誤格式化或分區導致MDF文件丟失。
    ?7 Sort page 排序時所用到的臨時頁,排序中間操作存儲數據用的。
    2、打開以前掃描好的碎片文件
    用戶可以使用SQL Server的NDF文件(一些日志文件)來進行恢復。但是在大多數損壞的案例中,單憑日志文件是不足以恢復數據庫的。因為有時候在一些被嚴重損壞的情況下,其對應的備份文件也同樣遭到了破壞。
    在此之后,您就需要開始檢查索引ID了。
    1.DBCC CHECKDB (Name_of _corrupt _database)
    4、開始組合MDF文件
    SQL Server 數據庫具有三種類型的文件
    ?1 Data page 堆表和聚集索引的葉子節點數據
    3、從列表選擇掃描得到的文件
    printopt 可選的輸出選項;選用其中一個值:
    ?? 在 SQL Server 中,數據庫中所有文件的位置都記錄在數據庫的主文件和 master 數據庫中。大多數情況下,SQL Server 數據庫引擎使用 master 數據庫中的文件位置信息。
    dbname 包含頁面的數據庫的名稱
    使用教程:
    ?9 SGAM page 共享全局分配映射(Shared Global Allocation Map,GAM)頁面 這些頁面記錄了哪些區當前被用作混合類型的區,并且這些區需含有至少一個未使用的頁面。
 
相關推薦