SQL Server 資料庫由資料庫檔案與交易日誌檔案組成。至少包含一個資料庫檔案與一個交易日誌檔案。
儲存資料與資料庫物件。可有多個檔案,但一個檔案僅屬一個資料庫。多檔案時:
.mdf,儲存啟動資訊與部分/全部資料,一個資料庫僅一個.ndf,儲存主檔案未儲存的其他資料多檔案優勢: 不受作業系統單一檔案大小限制;可分散儲存於不同硬碟,並行存取提升效能,對伺服器級電腦尤為有用。
記錄資料庫更新情況,副檔名 .ldf。INSERT、UPDATE、DELETE 等修改操作均記錄於此;SELECT 等不影響內容的操作不記錄。可有一或多個日誌檔案。
SQL Server 採用 Write-Ahead(預寫) 方式:修改先寫入日誌,再修改記憶體快取資料,定期(固定間隔)執行 CHECKPOINT 批量寫入硬碟。設有開始點與結束點,操作中斷時 SQL Server 重啟會自動恢復已修改資料至未修改狀態。資料庫損壞時可用交易日誌恢復內容。
將多個資料庫檔案集合為整體,每群組有群組名。分為主檔案群組(含所有系統表)與次檔案群組。建立資料庫時,主群組含主檔案與未指定群組的其他檔案。可指定預設檔案群組,建立物件未指定群組時放入預設群組;未指定預設群組則主群組為預設。
注意: 交易日誌檔案不屬於任何檔案群組。
或右鍵 Databases 選擇 New Database
Transaction Log 頁籤指定資料庫檔案名稱、位置、初始容量、所屬檔案群組
Transaction Log 頁籤指定日誌檔案名稱、位置、初始容量
注意: 名稱最長 128 字元,不分大小寫。容量單位 MB。資料庫檔案最小 1MB、最大 1,048,516TB;日誌檔案最小 1MB。理論上單一伺服器可管理 32,767 個資料庫。

database_name:名稱不超過 128 字元(系統加 5 字元邏輯後綴,實際可指定 123 字元)ON:指定資料庫檔案與檔案群組明確定義PRIMARY:指定主檔案或主群組。主群組第一個檔案為主檔案,含邏輯啟動資訊與系統表。無 PRIMARY 時命令中第一個檔案視為主檔案filespec:檔案說明;filegroupspec:檔案群組說明LOG ON:指定交易日誌檔案定義。無此選項時系統自動產生前綴同資料庫名、容量為所有資料檔案 1/4 的日誌檔案COLLATE:指定校驗方式(Windows 或 SQL 校驗名稱),省略則用當前 SQL Server 設定FOR LOAD:相容 SQL Server 7.0 前版本,建議用 RESTOREFOR ATTACH:附加既有資料庫檔案至新資料庫,無需重建檔案。需指定主檔案,代碼頁與排序次序須與當前 SQL Server 一致。建議用 sp_attach_db 替代。檔案超過 16 個時必須用此命令NAME:邏輯檔案名(FOR ATTACH 時不需)FILENAME:作業系統儲存路徑與檔名SIZE:初始容量。未指定主檔案大小時預設與模板資料庫主檔案一致,其他檔案與日誌預設 1MB。單位 KB/MB/GB/TB,預設 MB。不可用小數,最小 512KB,預設 1MB。主檔案大小不得小於模板資料庫主檔案MAXSIZE:最大容量。未指定則可無限增長至滿碟。UNLIMITED 為無限制FILEGROWTH:每次增容量。可為確定位元組數(KB/MB 後綴)或百分比(% 後綴),預設 MB。未指定則預設 10%,最小增量 64KBCREATE DATABASE 執行時使用模板資料庫初始化新資料庫(FOR ATTACH 除外)。模板資料庫中所有使用者定義物件與設定會複製到新資料庫。每資料庫有擁有者 (DBO),建立者預設為擁有者,可用 sp_changedbowner 變更。
create database mydb
on primary
( name = mydb_data1,
filename = 'd:\sql data\mydb_data1.mdf',
size = 1,
maxsize = unlimited,
filegrowth = 10% ),
filegroup data2
( name = mydb_data2,
filename = 'd:\sql data\mydb_data2.ndf',
size = 2,
maxsize = 100,
filegrowth = 1 ),
filegroup data3
( name = mydb_data3,
filename = 'd:\sql data\mydb_data3.ndf',
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 )
執行結果顯示各檔案配置 1.00MB、2.00MB、3.00MB 等磁碟空間。