CREATE DATABASE 是 SQL Server 中建立新資料庫、附加現有檔案或建立資料庫快照的核心指令。本文系統整理其完整語法、參數說明、最佳實踐與多樣化範例,助你精準掌握資料庫建立與管理。
CREATE DATABASE database_name
[ ON [ PRIMARY ] [ ,...n ] [ , [ ,...n ] ] ]
[ LOG ON [ ,...n ] ]
[ COLLATE collation_name ]
[ WITH
| 子句 | 用途 | 備註 |
|---|---|---|
| ON PRIMARY | 定義主資料檔(.mdf) | 第一個檔案自動成為主檔 |
| LOG ON | 定義交易記錄檔(.ldf) | 省略時自動建立,大小為資料檔總和 25% 或 512KB |
| FILEGROUP | 建立使用者檔案群 | 可標示 DEFAULT 導向新物件 |
| COLLATE | 指定預設定序 | 快照不可指定 |
| WITH DB_CHAINING / TRUSTWORTHY | 跨庫擁有權鏈 / 信任資料庫 | 需 sysadmin 權限 |
| FOR ATTACH | 附加現有作業系統檔案 | 需所有資料檔可用 |
| FOR ATTACH_REBUILD_LOG | 附加並重建遺失的記錄檔 | 僅限讀寫資料庫,中斷記錄備份鏈 |
| AS SNAPSHOT OF | 建立資料庫快照 | 唯讀、靜態視圖,不含記錄檔 |
NAME:邏輯檔名,資料庫內唯一。FILENAME:實體路徑,需預先存在,支援本機、SAN、iSCSI。SIZE:初始大小(KB/MB/GB/TB),預設 MB。MAXSIZE:最大大小,UNLIMITED 表無上限(記錄檔 2TB、資料檔 16TB)。FILEGROWTH:自動成長增量,支援固定值或百分比,預設資料檔 1MB、記錄檔 10%。CREATE DATABASE mytest;
GO
CREATE DATABASE Sales
ON (NAME = Sales_dat, FILENAME = 'C:\Data\saledat.mdf', SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 5MB)
LOG ON (NAME = Sales_log, FILENAME = 'C:\Data\salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB);
GO
CREATE DATABASE Archive
ON PRIMARY (NAME = Arch1, FILENAME = '...', SIZE = 100MB, MAXSIZE = 200MB, FILEGROWTH = 20MB),
(NAME = Arch2, FILENAME = '...', SIZE = 100MB, MAXSIZE = 200MB, FILEGROWTH = 20MB),
(NAME = Arch3, FILENAME = '...', SIZE = 100MB, MAXSIZE = 200MB, FILEGROWTH = 20MB)
LOG ON (NAME = Archlog1, FILENAME = '...', SIZE = 100MB, MAXSIZE = 200MB, FILEGROWTH = 20MB),
(NAME = Archlog2, FILENAME = '...', SIZE = 100MB, MAXSIZE = 200MB, FILEGROWTH = 20MB);
GO
CREATE DATABASE Sales
ON PRIMARY (NAME = SPri1_dat, ... FILEGROWTH = 15%), (NAME = SPri2_dat, ... FILEGROWTH = 15%)
FILEGROUP SalesGroup1 (NAME = SGrp1Fi1_dat, ... FILEGROWTH = 5%), (NAME = SGrp1Fi2_dat, ... FILEGROWTH = 5%)
FILEGROUP SalesGroup2 (NAME = SGrp2Fi1_dat, ... FILEGROWTH = 5%), (NAME = SGrp2Fi2_dat, ... FILEGROWTH = 5%)
LOG ON (NAME = Sales_log, ... FILEGROWTH = 5MB);
GO
sp_detach_db Archive;
GO
CREATE DATABASE Archive ON (FILENAME = 'C:\Data\archdat1.mdf') FOR ATTACH;
GO
CREATE DATABASE sales_snapshot0600 ON
(NAME = SPri1_dat, FILENAME = 'C:\Data\SPri1dat_0600.ss'),
(NAME = SPri2_dat, FILENAME = 'C:\Data\SPri2dt_0600.ss'),
...
AS SNAPSHOT OF Sales;
GO
CREATE DATABASE MyOptionsTest
COLLATE French_CI_AI
WITH TRUSTWORTHY ON, DB_CHAINING ON;
GO
CREATE DATABASE 必須在自動認交易模式下執行,不可在顯式/隱式交易中。model 的物件與選項(除非 FOR ATTACH)。DROP DATABASE 清理。sp_removedbreplication。CREATE DATABASE、CREATE ANY DATABASE 或 ALTER ANY DATABASE 權限。熟練掌握 CREATE DATABASE 的完整語法與選項,能依業務需求精準規劃儲存架構、效能與高可用策略。