1、文件與文件組
在SQL Server 中數據庫是由數據庫文件和事務日志文件組成的。一個數據庫至少應包含一個數據庫文件和一個事物日志文件。
(1) 數據庫文件(Database File)
數據庫文件是存放數據庫數據和數據庫對象的文件。一個數據庫可以有一個或多個數據庫文件,一個數據庫文件只屬於一個數據庫。當有多個數據庫文件時,有一個文件被定義為主數據庫文件(Primary Database File), 擴展名為mdf, 它用來存儲數據庫的啟動信息和部分或全部數據,一個數據庫只能有一個主數據庫文件。其它數據庫文件被稱為次數據庫文件(Secondary Database File), 擴展名為ndf, 用來存儲主文件沒存儲的其它數據。
采用多個數據庫文件來存儲數據的優點體現在:
·數據庫文件可以不斷擴充,而不受操作系統文件大小的限制;
·可以將數據庫文件存儲在不同的硬盤中,這樣可以同時對幾個硬盤做數據存取,提高了數據處理的效率。對於服務器型的計算機尤為有用。
(2) 事務日志文件(Transaction Log File)
事務日志文件是用來記錄數據庫更新情況的文件,擴展名為ldf。例如使用INSERT、UPDATE、 DELETE、 等對數據庫進行更的操作都會記錄在此文件中,而如SELECT 等對數據庫內容不會有影響的操作則不會記錄在案。一個數據庫可以有一個或多個事務日志文件。
SQL Server 中采用“Write-Ahead (提前寫)”方式的事務,即對數據庫的修改先寫入事務日志中,再寫入數據庫。其具體操作是,系統先將更改操作寫入事務日志中,再更改存儲在計算機緩存中的數據,為了提高執行效率,此更改不會立即寫到硬盤中的數據庫,而是由系統以固定4 的時間間隔執行CHECKPOINT 命令,將更改過的數據批量寫入硬盤。SQL Server 有個特點,它在執行數據更改時會設置一個開始點和一個結束點,如果尚未到達結束點就因某種原因使操作中斷,則在SQL Server 重新啟動時會自動恢復已修改的數據,使其返回未被修改的狀態。 由此可見,當數據庫破壞時,可以用事務日志恢復數據庫內容。