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 重新啟動時會自動恢復已修改的數據,使其返回未被修改的狀態。 由此可見,當數據庫破壞時,可以用事務日志恢復數據庫內容。
(3) 文件組(File Group)
文件組是將多個數據庫文件集合起來形成的一個整體。每個文件組有一個組名。與數據庫文件一樣,文件組也分為主文件組(Primary File Group) 和次文件組(Secondary FileGroup) 一個文件只能存在於一個文件組中,一個文件組也只能被一個數據庫使用。主文件組中包含了所有的系統表。當建立數據庫時,主文件組包括主數據庫文件和未指定組的其它文件。在次文件組中可以指定一個缺省文件組,那麼在創建數據庫對象時如果沒有指定將其放在哪一個文件組中,就會將它放在缺省文件組中。如果沒有指定缺省文件組則主文件組,為缺省文件組。
注意:事務日志文件不屬於任何文件組。
6.1.2 用Enterprise Manager 創建數據庫
在Enterprise Manager 中可以按下列步驟來創建數據庫:
(1) 單擊工具欄中的圖標,或在服務器的Databases 文件夾或其下屬數據庫圖標上單擊右鍵,選擇New Database…選項,即會出現如圖6-1 所示的對話框。
(2) 指定數據庫的名稱和編碼方式,如圖6-1 所示。
圖6-1 創建數據庫對話框
(3) 點擊Transaction Log 頁框,指定數據庫文件的名稱、存儲位置、初始容量大小和所屬文件組,如圖6-2 所示。
(4) 進行數據庫文件大小擴充方式和容量限制設置,如圖6-2 所示。
(5) 點擊Transaction Log 頁框,指定事務日志文件的名稱、存儲位置和初始容量大小,如圖6-3 所示。
(6) 進行事務日志文件大小擴充方式和容量限制設置,如圖6-3 所示。
(7) 單擊“確定”按鈕,則建新數據庫。
注意:數據庫的名稱最長為128個字符,且不區分大小寫。
注意:在此指定的文件容量以MB為單們的,數據庫文件的最小容量為1MB,最大容量為1,048,516TB(這麼大的硬盤還沒出世!);事務日志文件的最小容量為1MB。
一個服務器在理論上可以管理32,767數據庫。
6.1.3 用CREATE DATABASE 命令創建數據庫
歡迎光臨學網,收藏本篇文章 [1] [2] [3] [4]
size = 3,
maxsize = 50,
filegrowth = 500kb )
log on
( name = 'mydb_log1',
filename = 'd:\sql data\mydb_log1.ldf',
size = 1mb,
maxsize = 25mb,
filegrowth = 10% ),
( name = 'mydb_log2',
filename = 'd:\sql data\mydb_log2.ldf',
size = 1mb,
maxsize = 10mb,
filegrowth = 10% ),
( name = 'mydb_log3',
filename = 'd:\sql data\mydb_log3.ldf',
size = 1mb,
maxsize = 5mb,
filegrowth = 512kb )
運行結果如下
-------------------- --------------------
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Data1'.
The CREATE DATABASE process is allocating 2.00 MB on disk 'mydb_Data2'.
The CREATE DATABASE process is allocating 3.00 MB on disk 'mydb_Data3'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Log1'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Log2'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Log3'.