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

CREATE DATABASE (Transact-SQL) 完整語法詳解與實戰範例

     編輯:關於SqlServer

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%。

實戰範例精選

A. 最簡單建庫(繼承 model 設定)

CREATE DATABASE mytest;
GO

B. 指定資料/記錄檔參數

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

C. 多檔案、多記錄檔

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

D. 檔案群架構

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

E. 附加資料庫

sp_detach_db Archive;
GO
CREATE DATABASE Archive ON (FILENAME = 'C:\Data\archdat1.mdf') FOR ATTACH;
GO

F. 建立資料庫快照

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

G. 指定定序與資料庫選項

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 權限。
  • SQL Server 2005+ 會自動設定檔案 ACL,防止誤刪(Express 版除外)。

熟練掌握 CREATE DATABASE 的完整語法與選項,能依業務需求精準規劃儲存架構、效能與高可用策略。

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