來源:巨靈鳥軟件 作者:進銷存軟件 發布:2017/4/5 瀏覽次數:3709
文件組成原理
SQL Server數據庫系統主要由兩大部分組成,分別是數據文件以及日志文件。數據文件存儲數據,日志文件存儲操作數據的行為。
數據文件
SQL Server數據庫包含兩種類型的數據文件:主數據文件和次要數據文件。主數據文件是數據庫的起點,指向數據庫中的其他文件。每個數據庫都有一個主數據文件。主數據文件默認文件擴展名是.mdf。除主數據文件以外的所有其他數據文件都是次要數據文件。某些數據庫可能不含有任何次要數據文件,而有些數據庫則含有多個次要數據文件。次要數據文件的推薦文件擴展名是.ndf。
日志文件
日志文件在數據庫中作用十分重要。在執行數據操作的過程中,首先將數據操作命令寫入到緩存中,并立即寫入日志文件,但不會立即寫入數據文件。日志文件通過一個標記點來確定某個操作是否已將緩存中的數據寫入數據文件。當SQLServer重啟后,會自動查看日志中最新的標記點,并將這個標記點后面的交易記錄抹去,因為這些交易記錄并沒有真正地將緩存中的數據寫入數據文件。這可以防止那些中斷的操作修改數據文件。
事務日志記錄數據庫操作命令,僅記錄執行數據發生的動作,而不是記錄數據的執行結果。因此備份事務日志后,將備份點之前已經完成的事務標記為“不活動”,而且在執行完整備份數據庫后,將自動截斷標記為“不活動”的日志記錄。合理的安排事務日志備份將提高數據恢復的能力,可以將數據恢復到發生故障前的1秒鐘。
各種文件丟失恢復方法
數據文件丟失
數據庫系統處于運行狀態時,數據庫文件處于“活動”狀態,數據庫文件不能被刪除。如果確實出現數據文件被刪除的情況,可能由于以下原因:MS SQL Server數據庫服務停止;或者在企業管理器中,數據庫管理員使用“分離數據庫”功能,分離數據庫后將數據庫文件刪除。
當出現數據庫文件被刪除時,首先需要了解數據庫文件如何被刪除,再利用恢復軟件恢復被刪除的文件。如果是在服務被停止的狀態下刪除,數據庫文件恢復后,數據庫文件即可正常加載。如果是數據庫分離后的刪除,數據庫文件恢復后,在企業管理器中,使用附加數據庫功能即可。
日志文件丟失
日志文件丟失,經常出現在硬件出現故障時,主要體現在數據文件和日志分別存儲在不同的物理介質中,當介質損壞時,日志文件隨之丟失。丟失SQL Server日志文件分為兩類:無活動事務的日志和包含活動事務的日志。
SQL Server在工作狀態下無法刪除日志文件,事務日志文件在SQL Server服務未啟動的情況下可以被刪除。啟動SQL服務后,數據庫即被標志為“置疑”狀態,這種狀態下丟失的日志文件為無活動事務日志文件。無活動事務的日志丟失時,首先在企業管理器中,使用分離數據庫功能,分離“置疑”的數據庫。然后,使用附加數據庫功能附加數據庫,在附加的過程中創建新的日志文件即可。
當包含活動事務日志的文件丟失時,使用無活動事務的日志丟失處理方法,將顯示“數據庫和日志文件不符合,不能附加數據庫”錯誤信息。數據庫管理員首先要停止SQL Server服務,將數據文件備份到安全區域。然后啟動SQL Server服務,創建新的同名數據庫,再停止SQL Server服務,用備份的數據文件覆蓋新創建的數據文件。以單用戶模式啟動SQL Server服務后,將數據庫模式設置為緊急模式,使用“DBCC CHECKDB”命令檢驗數據庫的狀態,完成后將數據庫設置為正常模式,即可完成數據庫的修復。
數據表文件丟失
在業務系統中提供的數據刪除功能和數據庫管理員在維護數據庫過程中,使用Delete命令刪除數據表中的數據,產生的結果完全相同。在工作中經常會遇到誤刪數據的情況。管理員發出刪除數據命令后,首先將刪除命令記錄在日志文件中,然后在數據庫中執行刪除操作。由于數據行記錄在數據頁中,已經刪除的數據頁并沒有真正刪除“Slot”中的數據,只是將數據頁標記為已經使用,如果有新的數據寫入,不會對此類數據頁寫入數據。
在SQL Server 數據庫中,沒有提供恢復數據行命令,標準的恢復刪除數據的方法是使用基于備份的事務日志時間點功能。管理員在使用日志恢復時,經過多次定位時間點,可以還原刪除的數據。
Log Explorer for SQL Server能夠幫助管理員管理、監控數據庫日志,如圖1所示。Log Explorer支持聯機事務日志文件和離線事務日志文件。當管理員發現數據誤刪后,建議立即備份數據庫,停止SQL Sever服務。啟動該工具,使用離線事務日志文件功能,加載誤刪的日志文件。選擇目標數據表以及執行刪除操作的數據庫用戶,設置過濾條件,在瀏覽日志窗口中顯示相關的日志,使用“Undo Transactions”功能生成InsertSQL代碼并保存到文本文件中,確認腳本正確后,使用“Run SQL Script” 功能即可完成數據恢復。用戶錯誤執行“Update”腳本后,使用同樣的方法可以生成“Update”腳本,將數據恢復到修改前的狀態。
數據庫恢復
數據庫恢復是數據庫管理員必須掌握的基本技能。SQL Server數據庫提供了3種數據恢復模型,分別為:簡單模型、完全模型、大容量日志記錄模型。
如果數據庫可用,可按照如下流程恢復數據庫:
1. 備份尾日志。尾日志記錄是自上一次數據庫完整備份、差異備份或者日志備份后生成的日志。
2. 還原數據庫備份。該恢復過程可以在圖形模式和查詢分析器中完成,如圖2所示。當數據庫不能訪問時,也可恢復數據庫或者日志,數據庫處于恢復過程中顯示的狀態為“正在裝載”。
3.還原備份的事務日志備份,恢復參數為“No Recovery”。
4.用同樣的方法還原尾日志。在還原尾日志的過程中恢復參數設置為“With Recovery”,恢復過程中自動回滾未提交的事務日志,根據需要選擇時間點,數據庫恢復即可完成。
企業備份數據的方法各不相同,數據庫管理員應該了解數據庫備份策略,要經常對數據庫恢復和恢復過程進行測試,以便應對突發的數據庫災難。
圖1 Log Explorer可幫助管理員管理、監控數據庫日志
來源:巨靈鳥 歡迎分享本文
上一個文章:SQL2008安裝指南(一)
下一個文章:企業選型數據庫系統的五點建議