首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 資料庫建立核心架構:檔案、檔案群組、交易日誌與 CREATE DATABASE 完整語法實戰

     編輯:關於SqlServer

1. 檔案與檔案群組:資料庫儲存架構基石

SQL Server 資料庫由資料庫檔案與交易日誌檔案組成。至少包含一個資料庫檔案與一個交易日誌檔案。

(1) 資料庫檔案

儲存資料與資料庫物件。可有多個檔案,但一個檔案僅屬一個資料庫。多檔案時:

  • 主資料庫檔案:副檔名 .mdf,儲存啟動資訊與部分/全部資料,一個資料庫僅一個
  • 次資料庫檔案:副檔名 .ndf,儲存主檔案未儲存的其他資料

多檔案優勢: 不受作業系統單一檔案大小限制;可分散儲存於不同硬碟,並行存取提升效能,對伺服器級電腦尤為有用。

(2) 交易日誌檔案

記錄資料庫更新情況,副檔名 .ldf。INSERT、UPDATE、DELETE 等修改操作均記錄於此;SELECT 等不影響內容的操作不記錄。可有一或多個日誌檔案。

SQL Server 採用 Write-Ahead(預寫) 方式:修改先寫入日誌,再修改記憶體快取資料,定期(固定間隔)執行 CHECKPOINT 批量寫入硬碟。設有開始點與結束點,操作中斷時 SQL Server 重啟會自動恢復已修改資料至未修改狀態。資料庫損壞時可用交易日誌恢復內容。

(3) 檔案群組

將多個資料庫檔案集合為整體,每群組有群組名。分為主檔案群組(含所有系統表)與次檔案群組。建立資料庫時,主群組含主檔案與未指定群組的其他檔案。可指定預設檔案群組,建立物件未指定群組時放入預設群組;未指定預設群組則主群組為預設。

注意: 交易日誌檔案不屬於任何檔案群組。

6.1.2 使用 Enterprise Manager 建立資料庫

  1. 點擊工具列「新增資料庫」圖示 或右鍵 Databases 選擇 New Database
  2. 指定資料庫名稱與編碼方式
  3. 點擊 Transaction Log 頁籤指定資料庫檔案名稱、位置、初始容量、所屬檔案群組
  4. 設定資料庫檔案擴充方式與容量限制
  5. 點擊 Transaction Log 頁籤指定日誌檔案名稱、位置、初始容量
  6. 設定日誌檔案擴充方式與容量限制
  7. 點擊「確定」建立資料庫

注意: 名稱最長 128 字元,不分大小寫。容量單位 MB。資料庫檔案最小 1MB、最大 1,048,516TB;日誌檔案最小 1MB。理論上單一伺服器可管理 32,767 個資料庫。

6.1.3 使用 CREATE DATABASE 命令建立資料庫

核心參數說明

  • 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 前版本,建議用 RESTORE
  • FOR 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%,最小增量 64KB

CREATE DATABASE 執行時使用模板資料庫初始化新資料庫(FOR ATTACH 除外)。模板資料庫中所有使用者定義物件與設定會複製到新資料庫。每資料庫有擁有者 (DBO),建立者預設為擁有者,可用 sp_changedbowner 變更。

範例 6-1:建立多檔案、多檔案群組、多日誌檔案的資料庫

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 等磁碟空間。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved