CREATE DATABASE

建立新資料庫。

針對您使用的特定 SQL 版本,選取下列其中一個索引標籤,以取得語法、引數、備註、許可權和範例。

選取產品

在下列資料列中,選取您感興趣的產品名稱,只顯示該產品的資訊。

* SQL Server *  

 

SQL Server

概觀

在 SQL Server 中,此陳述式會建立新的資料庫與使用的檔案及其檔案群組。 它也可以用來建立資料庫快照集,或附加資料庫檔案,以從其他資料庫中斷連結的檔案建立資料庫。

語法

建立資料庫。

如需語法慣例的詳細資訊,請參閱 Transact-SQL 語法慣例

CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON
      [ PRIMARY ] <filespec> [ ,...n ]
      [ , <filegroup> [ ,...n ] ]
      [ LOG ON <filespec> [ ,...n ] ]
]
[ COLLATE collation_name ]
[ WITH <option> [,...n ] ]
[;]

<option> ::=
{
      FILESTREAM ( <filestream_option> [,...n ] )
    | DEFAULT_FULLTEXT_LANGUAGE = { lcid | language_name | language_alias }
    | DEFAULT_LANGUAGE = { lcid | language_name | language_alias }
    | NESTED_TRIGGERS = { OFF | ON }
    | TRANSFORM_NOISE_WORDS = { OFF | ON }
    | TWO_DIGIT_YEAR_CUTOFF = <two_digit_year_cutoff>
    | DB_CHAINING { OFF | ON }
    | TRUSTWORTHY { OFF | ON }
    | PERSISTENT_LOG_BUFFER=ON ( DIRECTORY_NAME='<Filepath to folder on DAX formatted volume>' )
    | LEDGER = {ON | OFF }
}

<filestream_option> ::=
{
      NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
    | DIRECTORY_NAME = 'directory_name'
}

<filespec> ::=
{
(
    NAME = logical_file_name ,
    FILENAME = { 'os_file_name' | 'filestream_path' }
    [ , SIZE = size [ KB | MB | GB | TB ] ]
    [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
    [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
)
}

<filegroup> ::=
{
FILEGROUP filegroup name [ [ CONTAINS FILESTREAM ] [ DEFAULT ] | CONTAINS MEMORY_OPTIMIZED_DATA ]
    <filespec> [ ,...n ]
}

附加資料庫

CREATE DATABASE database_name
    ON <filespec> [ ,...n ]
    FOR { { ATTACH [ WITH <attach_database_option> [ , ...n ] ] }
        | ATTACH_REBUILD_LOG }
[;]

<attach_database_option> ::=
{
      <service_broker_option>
    | RESTRICTED_USER
    | FILESTREAM ( DIRECTORY_NAME = { 'directory_name' | NULL } )
}

<service_broker_option> ::=
{
    ENABLE_BROKER
  | NEW_BROKER
  | ERROR_BROKER_CONVERSATIONS
}

建立資料庫快照集

CREATE DATABASE database_snapshot_name
    ON
    (
        NAME = logical_file_name,
        FILENAME = 'os_file_name'
    ) [ ,...n ]
    AS SNAPSHOT OF
[;]

引數

database_name

這是新資料庫的名稱。 資料庫名稱在SQL Server的實例內必須是唯一的,且符合識別碼的規則。

除非沒有指定記錄檔的邏輯名稱,否則 database_name 最多可有 128 個字元。 如果未指定邏輯記錄檔名稱,SQL Server藉由將尾碼附加至 database_name,來產生記錄檔的logical_file_nameos_file_name。 這會將 database_name 限制為 123 個字元,使所產生的邏輯檔案名稱不超過 128 個字元。

如果未指定資料檔案名稱,SQL Server會使用database_name作為logical_file_nameos_file_name。 預設路徑是從登錄取得。 您可以在 Management Studio 中的 [伺服器屬性] ([資料庫設定] 頁面) 變更預設路徑。 變更預設路徑需要重新開機SQL Server。

CONTAINMENT = { NONE | PARTIAL }

適用于:SQL Server 2012 (11.x) 和更新版本

指定資料庫的內含項目狀態。 NONE = 非自主資料庫 PARTIAL = 部分自主資料庫

開啟

指定必須明確定義用來儲存資料庫之資料區段 (資料檔案) 的磁碟檔案。 當後面接著定義主要檔案群組之資料檔案的 < filespec > 專案逗號分隔清單時,需要 ON。 主要檔案群組中的檔案清單後面可以接著定義使用者檔案群組及其檔案的 < 選擇性逗號分隔檔案群組 > 專案清單。

PRIMARY

指定相關聯的 < filespec > 清單會定義主要檔案。 主要檔案群組中 < filespec > 專案中指定的第一個檔案會成為主要檔案。 資料庫只能有一個主要檔案。 如需相關資訊,請參閱 Database Files and Filegroups

如果未指定 PRIMARY,CREATE DATABASE 陳述式中列出的第一個檔案會成為主要檔案。

LOG ON

指定必須明確定義用來儲存資料庫記錄 (記錄檔) 的磁碟檔案。 LOG ON 後面接著定義記錄檔之 < filespec > 專案的逗號分隔清單。 如果未指定 LOG ON,系統會自動建立一個記錄檔,該檔案的大小是資料庫之所有資料檔案的大小總和的 25% 或 512 KB 其中較大者。 這個檔案會放置在預設的記錄檔位置中。 如需此位置的相關資訊,請參閱 檢視或變更 SSMS 中資料和記錄檔的預設位置

資料庫快照集中無法指定 LOG ON。

COLLATE collation_name

指定資料庫的預設定序。 定序名稱可以是 Windows 定序名稱或 SQL 定序名稱。 如果未指定,則會將資料庫指派給實例的預設定序SQL Server。 資料庫快照集中無法指定定序名稱。

定序名稱無法利用 FOR ATTACH 或 FOR ATTACH_REBUILD_LOG 子句來指定。 如需有關如何變更所附加資料庫之定序的資訊,請瀏覽此 Microsoft 網站

如需有關 Windows 和 SQL 定序名稱的詳細資訊,請參閱 COLLATE

注意

自主資料庫的定序方式不同於非自主資料庫。 如需詳細資訊,請參閱 自主資料庫定序

WITH < 選項>

<filestream_option>

NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }

適用于:SQL Server 2012 (11.x) 和更新版本。

指定資料庫層級的非交易式 FILESTREAM 存取層級。

描述
OFF 已停用非交易式存取
READONLY 非交易式處理序可以讀取此資料庫中的 FILESTREAM 資料。
FULL 已啟用 FILESTREAM FileTables 的完整非交易式存取。

DIRECTORY_NAME = < directory_name>

適用于:SQL Server 2012 (11.x) 和更新版本

Windows 相容的目錄名稱。 在 SQL Server 執行個體的所有 Database_Directory 名稱之間,此名稱必須是唯一的。 不論SQL Server定序設定為何,唯一性比較不區分大小寫。 在您在此資料庫中建立 FileTable 之前,應該先設定此選項。



只有當 CONTAINMENT 已經設為 PARTIAL 時,才允許下列選項。 如果 CONTAINMENT 設定為 NONE,便會發生錯誤。

DEFAULT_FULLTEXT_LANGUAGE = < lcid > | <語言名稱 > | <語言別名>

適用于:SQL Server 2012 (11.x) 和更新版本

如需此選項的完整描述,請參閱設定 default full-text language 伺服器設定選項

DEFAULT_LANGUAGE = < lcid > | <語言名稱 > | <語言別名>

適用于:SQL Server 2012 (11.x) 和更新版本

如需此選項的完整描述,請參閱設定 default language 伺服器設定選項

NESTED_TRIGGERS = { OFF |ON }

適用于:SQL Server 2012 (11.x) 和更新版本

如需此選項的完整描述,請參閱設定 nested triggers 伺服器設定選項

TRANSFORM_NOISE_WORDS = { OFF |ON }

適用于:SQL Server 2012 (11.x) 和更新版本

如需此選項的完整描述,請參閱 transform noise words 伺服器設定選項

TWO_DIGIT_YEAR_CUTOFF = { 2049 | <1753 到 9999 > } 之間的任何年份

表示一年的四位數。 2049 是預設值。 如需此選項的完整說明,請參閱設定兩位數年份的截止伺服器組態選項

DB_CHAINING { OFF | ON }

當指定 ON 時,資料庫可以是跨資料庫擁有權鏈結的來源或目標。

當指定 OFF 時,資料庫不能參與跨資料庫擁有權鏈結。 預設值為 OFF。

重要

當跨資料庫擁有權鏈結伺服器選項為 0 (OFF) 時,SQL Server實例會辨識此設定。 當 cross db ownership chaining 為 1 (ON) 時,不論這個選項的值為何,所有使用者資料庫都可以參與跨資料庫擁有權鏈結。 您可以使用 sp_configure 來設定這個選項。

若要設定這個選項,則需要有系統管理員 (sysadmin) 固定伺服器角色的成員資格。 這些系統資料庫上無法設定DB_CHAINING選項: master 、、 modeltempdb

TRUSTWORTHY { OFF | ON }

當指定 ON 時,使用模擬內容的資料庫模組 (例如,檢視表、使用者定義函數或預存程序) 可以存取資料庫外部的資源。

當指定 OFF 時,模擬內容中的資料庫模組不能存取資料庫外部的資源。 預設值為 OFF。

每當附加資料庫時,TRUSTWORTHY 都設為 OFF。

根據預設,資料庫以外的 msdb 所有系統資料庫都會將 TRUSTWORTHY 設定為 OFF。 和 tempdb 資料庫的值無法變更 model 。 建議您永遠不會將資料庫的 TRUSTWORTHY 選項設定為 master ON。

PERSISTENT_LOG_BUFFER=ON ( DIRECTORY_NAME='' )

指定此選項時,交易記錄緩衝區會在磁片區上建立,該磁片區位於儲存體類別記憶體支援的磁片裝置上, (NVDIMM-N 非volatiatile 儲存體) ,也稱為持續性記錄緩衝區。 如需詳細資訊,請參閱使用存放裝置類別記憶體加速交易認可延遲 \(英文\)。 適用于:SQL Server 2017 (14.x) 和更新版本。

LEDGER = {ON |OFF }

當設定為 ON 時,它會建立總帳資料庫,其中會保護所有使用者資料的完整性。 只有總帳資料表可以在總帳資料庫中建立。 預設值為 OFF。 建立資料庫之後,就無法變更選項的值 LEDGER 。 如需詳細資訊,請參閱 設定總帳資料庫

CREATE DATABASE ...FOR ATTACH [ WITH < attach_database_option > ]

指定藉由 附加 一組現有的作業系統檔案來建立資料庫。 必須有 < 指定主要檔案的 filespec > 專案。 唯一所需的其他 < filespec > 專案,就是第一次建立或最後附加資料庫時,具有不同路徑的任何檔案。 <必須為這些檔案指定 filespec > 專案。

FOR ATTACH 需要下列項目:

  • 所有資料檔案 (MDF 和 NDF) 都必須是可用的。
  • 如果存在多個記錄檔,它們必須全部都是可用的。

如果讀取/寫入資料庫有目前無法使用的單一記錄檔,且在進行附加作業之前,資料庫因為沒有使用者或開啟的交易而關閉,則 FOR ATTACH 會自動重建記錄檔並更新主要檔案。 反之,如果是唯讀資料庫,則會因為無法更新主要檔案而無法重建記錄。 因此,當您所附加的唯讀資料庫之記錄無法使用時,您必須在 FOR ATTACH 子句中提供記錄檔或檔案。

注意

舊版中無法附加由較新版本SQL Server所建立的資料庫。

在SQL Server中,屬於所附加資料庫一部分的任何全文檢索檔案都會與資料庫附加。 若要指定全文檢索目錄的新路徑,請指定一個不含全文檢索作業系統檔案名稱的新位置。 如需詳細資訊,請參閱<範例>一節。

將包含 「Directory name」 FILESTREAM 選項的資料庫附加至SQL Server實例,將會提示SQL Server確認Database_Directory名稱是唯一的。 如果不是,附加作業會失敗,並出現錯誤。 FILESTREAM Database_Directory name is not unique in this SQL Server instance 若要避免這個錯誤,應該將選擇性參數 directory_name 傳遞給此作業。

資料庫快照集中無法指定 FOR ATTACH。

FOR ATTACH 可以指定 RESTRICTED_USER 選項。 RESTRICTED_USER 只允許 db_owner 固定資料庫角色以及資料庫建立者 (dbcreator) 和系統管理員 (sysadmin) 固定伺服器角色的成員連接到資料庫,但並不限制他們的數目。 不合格的使用者嘗試連接遭到拒絕。

<service_broker_option>

如果資料庫使用 Service Broker,請使用 FOR ATTACH 子句中的 WITH < service_broker_option > :

控制 Service Broker 訊息傳遞和資料庫的 Service Broker 識別碼。 只有在使用 FOR ATTACH 子句時,才能指定 Service Broker 選項。

ENABLE_BROKER

指定為指定的資料庫啟用 Service Broker。 也就是說,訊息傳遞已啟動,而且 is_broker_enabled 會在目錄檢視中 sys.databases 設定為 true。 資料庫會保留現有的 Service Broker 識別碼。

NEW_BROKER

在 和還原的資料庫中 sys.databases 建立新的 service_broker_guid 值。 以清除結束所有交談端點。 它會啟用 Broker,但不會傳送任何訊息到遠端交談端點。 任何參考舊 Service Broker 識別碼的路由都必須以新的識別碼重新建立。

ERROR_BROKER_CONVERSATIONS

結束所有交談,並顯示一則指出已附加或還原資料庫的錯誤。 Broker 將保持停用,直到這項作業完成之後才會啟用。 資料庫會保留現有的 Service Broker 識別碼。

當您附加的複寫資料庫是複製而非卸離時,請考慮下列各項:

  • 如果您要將資料庫附加至與原始資料庫相同的伺服器執行個體和版本,則不需要其他步驟。
  • 如果您將資料庫附加至相同但版本已升級的伺服器執行個體,則必須在附加作業完成後,執行 sp_vupgrade_replication 來升級複寫。
  • 如果您將資料庫附加至不同的伺服器執行個體,則不論版本為何,都必須在附加作業完成後,執行 sp_removedbreplication 來移除複寫。

注意

附加可搭配vardecimal儲存格式運作,但SQL Server Database Engine 必須升級至至少 SQL Server 2005 (9.x) SP2。 您無法使用 vardecimal 儲存格式將資料庫附加至舊版的 SQL Server。 如需有關 Vardecimal 儲存格式的詳細資訊,請參閱資料壓縮

當資料庫第一次連接或還原到新的 SQL Server 執行個體時,資料庫主要金鑰複本 (由服務主要金鑰加密) 尚未儲存在伺服器中。 您必須利用 OPEN MASTER KEY 陳述式來解密資料庫主要金鑰 (DMK)。 DMK 解密之後,您便可以選擇利用 ALTER MASTER KEY REGENERATE 陳述式來提供服務主要金鑰 (SMK) 所加密的 DMK 複本給伺服器,以在未來啟用自動解密。 當資料庫從舊版升級時,應該會重新產生 DMK 以使用較新的 AES 演算法。 如需重新產生 DMK 的詳細資訊,請參閱 ALTER MASTER KEY。 重新產生 DMK 金鑰以升級至 AES 所需的時間是取決於 DMK 所保護的物件數目而定。 重新產生 DMK 金鑰以升級至 AES 只需執行一次,且不會影響金鑰循環策略中後續的重新產生。 如需如何使用附加來升級資料庫的資訊,請參閱使用卸離與附加來升級資料庫

重要

建議您不要附加來源不明或來源不受信任的資料庫。 這類資料庫可能包含惡意程式碼,這些惡意程式碼可能會執行非預期的 Transact-SQL 程式碼,或藉由修改架構或實體資料庫結構而造成錯誤。 使用來源不明或來源不受信任的資料庫之前,請先在非實際執行伺服器的資料庫上執行 DBCC CHECKDB,同時也檢查資料庫中的程式碼,例如預存程序或其他使用者定義程式碼。

注意

附加資料庫時 ,TRUSTWORTHYDB_CHAINING 選項沒有任何作用。

FOR ATTACH_REBUILD_LOG

指定資料庫是藉由附加一組現有的作業系統檔案所建立。 這個選項只適用於讀取/寫入資料庫。 必須有指定主要檔案的filespec > 專案。 < 如果遺漏一個或多個交易記錄檔,記錄檔就會重建。 ATTACH_REBUILD_LOG 會自動建立新的 1 MB 記錄檔。 這個檔案會放置在預設的記錄檔位置中。 如需此位置的相關資訊,請參閱 檢視或變更 SSMS 中資料和記錄檔的預設位置

注意

如果記錄檔可供使用,Database Engine 會使用這些檔案,而不是重建記錄檔。

FOR ATTACH_REBUILD_LOG需要下列條件:

  • 正常關閉資料庫。
  • 所有資料檔案 (MDF 和 NDF) 都必須是可用的。

重要

這項作業會中斷記錄備份鏈結。 建議您在作業完成之後執行完整的資料庫備份。 如需詳細資訊,請參閱 BACKUP

一般而言,如果您要將一個含有大型記錄的讀/寫資料庫複製到其他伺服器,而該伺服器中,因為資料庫副本大部分用在讀取作業或只用在讀取作業,所以所需的記錄空間比原始資料庫少,在這種情況下,通常就會使用 FOR ATTACH_REBUILD_LOG。

資料庫快照集中無法指定 FOR ATTACH_REBUILD_LOG。

如需附加及卸離資料庫的詳細資訊,請參閱資料庫卸離與附加

<filespec>

控制檔案屬性。

NAME logical_file_name

指定檔案的邏輯名稱。 除非指定其中一個 FOR ATTACH 子句,否則指定 FILENAME 時,NAME 是必要的。 FILESTREAM 檔案群組不能命名為 PRIMARY。

logical_file_name這是參考檔案時,SQL Server中使用的邏輯名稱。 Logical_file_name 在資料庫中必須是唯一的,且必須符合識別碼的規則。 名稱可以是字元或 Unicode 常數,或是一般識別碼或分隔識別碼。

FILENAME { 'os_file_name' |'filestream_path' }

指定作業系統 (實體) 檔案名稱。

'os_file_name' 是當您建立檔案時作業系統所使用的路徑和檔案名稱。 檔案必須位於下列其中一個裝置:安裝SQL Server的本機伺服器、儲存區域網路 [SAN] 或 iSCSI 型網路。 執行 CREATE DATABASE 陳述式之前,指定的路徑必須存在。 如需詳細資訊,請參閱本文稍後 的資料庫檔案和檔案群組

當指定檔案的 UNC 路徑時,可以設定 SIZE、MAXSIZE 和 FILEGROWTH 參數。

如果檔案在原始磁碟分割中,os_file_name 只能指定現有原始磁碟分割的磁碟機代號。 每個原始分割區上只能建立一個資料檔案。

注意

SQL Server 2014 和更新版本不支援原始分割區。

除非檔案是唯讀次要檔案,或者,資料庫是唯讀的,否則資料檔案不應該放在壓縮的檔案系統中。 記錄檔永遠不應放在壓縮的檔案系統中。

'filestream_path' 針對 FILESTREAM 檔案群組,FILENAME 會參考將儲存 FILESTREAM 資料的路徑。 到最後一個資料夾為止的路徑必須存在,而最後一個資料夾則不得存在。 例如,如果您指定路徑 C:\MyFiles\MyFilestreamDataC:\MyFiles 則必須先存在,才能執行 ALTER DATABASE,但 MyFilestreamData 資料夾不得存在。

檔案群組和檔案 (<filespec>) 必須在相同的陳述式中建立。

SIZE 和 FILEGROWTH 屬性不會套用到 FILESTREAM 檔案群組。

SIZE size

指定檔案的大小。

os_file_name 指定為 UNC 路徑時,不能指定 SIZE。 SIZE 不會套用到 FILESTREAM 檔案群組。

size 這是檔案的初始大小。

未提供主檔案 的大小 時,Database Engine 會使用資料庫中的主要檔案 model 大小。 資料庫的預設大小 model 為 8 MB (從 SQL Server 2016 (13.x) ) 開始,或舊版) 1 MB (。 指定次要資料檔案或記錄檔時,但未為檔案指定大小時,Database Engine 會將檔案 8 MB (從 2016 SQL Server 2016 (13.x) ) 或舊版的 1 MB () 開始。 為主要檔案指定的大小必須至少與資料庫的主要檔案 model 相同。

您可以使用千位元組 (KB)、百萬位元組 (MB)、十億位元組 (GB) 或兆位元組 (TB) 後置詞。 預設值是 MB。 指定整數。 請勿包含小數點。 Size 是一個整數值。 如果是大於 2147483647 的值,請使用較大的單位。

MAXSIZE max_size

指定檔案所能成長的大小上限。 將 os_file_name 指定為 UNC 路徑時,不能指定 MAXSIZE。

max_size 這是檔案大小上限。 可以使用 KB、MB、GB 及 TB 後置詞。 預設值是 MB。 指定整數。 請勿包含小數點。 如果未指定 max_size,檔案就會成長到磁碟已滿為止。 Max_size 是一個整數值。 如果是大於 2147483647 的值,請使用較大的單位。

UNLIMITED 指定檔案可成長直到磁碟已滿。 在SQL Server中,以無限制成長指定的記錄檔大小上限為 2 TB,而資料檔案的大小上限為 16 TB。

注意

為 FILESTREAM 容器指定這個選項時沒有最大大小。 它會繼續成長,直到磁碟已滿。

FILEGROWTH growth_increment

指定檔案的自動成長遞增。 檔案的 FILEGROWTH 設定不能超過 MAXSIZE 設定。 將 os_file_name 指定為 UNC 路徑時,不能指定 FILEGROWTH。 FILEGROWTH 不會套用到 FILESTREAM 檔案群組。

growth_increment 這是每次需要新空間時新增至檔案的空間量。

您可以利用 MB、KB、GB、TB 或百分比 (%) 來指定這個值。 如果指定的數字不含 MB、KB 或 % 後置詞,預設值是 MB。 當指定 % 時,成長遞增大小便是遞增發生時,檔案大小的指定百分比。 指定的大小會捨入到最接近 64 KB,最小值為 64 KB。

0 值指出自動成長是關閉的,且不允許其他空間。

如果未指定 FILEGROWTH,預設值為:

版本 預設值
從 SQL Server 2016 (13.x) 開始 資料 64 MB。 記錄檔 64 MB。
從 2005 SQL Server 2005 (9.x) 資料 1 MB。 記錄檔 10%。
SQL Server 2005 之前 (9.x) 資料 10%。 記錄檔 10%。

<filegroup>

控制檔案群組屬性。 資料庫快照集中無法指定檔案群組。

FILEGROUP filegroup_name

這是檔案群組的邏輯名稱。

filegroup_namefilegroup_name 在資料庫中必須是唯一的,且不能是系統提供的名稱 PRIMARY 和 PRIMARY_LOG。 名稱可以是字元或 Unicode 常數,或是一般識別碼或分隔識別碼。 名稱必須符合識別碼的規則。

CONTAINS FILESTREAM 指定檔案群組會將 FILESTREAM 二進位大型物件 (BLOB) 儲存在檔案系統中。

DEFAULT 指定具名的檔案群組必須是資料庫中預設檔案群組。

CONTAINS MEMORY_OPTIMIZED_DATA適用于:SQL Server 2014 (12.x) 和更新版本

指定檔案群組將記憶體最佳化的資料儲存在檔案系統中。 如需詳細資訊,請參閱 記憶體內部優化概觀和使用案例。 每個資料庫只允許一個 MEMORY_OPTIMIZED_DATA 檔案群組。 如需可建立檔案群組來儲存記憶體最佳化資料的程式碼範例,請參閱建立記憶體最佳化資料表和原生編譯的預存程序

database_snapshot_name

這是新資料庫快照集的名稱。 資料庫快照集名稱在SQL Server實例內必須是唯一的,且符合識別碼的規則。 database_snapshot_name 最多可有 128 個字元。

ON ( NAME =logical_file_name, FILENAME ='os_file_name') [ ,... n ]

若要建立資料庫快照集,請在來源資料庫中指定檔案清單。 必須個別指定所有資料檔案,快照集才能運作。 不過,記錄檔不能用在資料庫快照集。 資料庫快照集不支援 FILESTREAM 檔案群組。 如果 FILESTREAM 資料檔案包含在 CREATE DATABASE ON 子句中,此陳述式將會失敗,並引發錯誤。

如需 NAME 和 FILENAME 及其值的描述,請參閱對等 < filespec > 值的描述。

注意

當您建立資料庫快照集時,不允許其他 < filespec > 選項和關鍵字 PRIMARY。

AS SNAPSHOT OF source_database_name

指定要建立的資料庫是 source_database_name 所指定來源資料庫的資料庫快照集。 該快照集和來源資料庫必須位於相同的執行個體上。

如需詳細資訊,請參閱<備註>一節中的資料庫快照集

備註

每當建立、修改或卸除使用者資料庫時,都應該備份 master 資料庫

CREATE DATABASE 陳述式必須在自動認可模式 (預設的交易管理模式) 下執行,且不能用於明確或隱含的交易。

您可使用一個 CREATE DATABASE 陳述式來建立資料庫與儲存資料庫的檔案。 SQL Server使用下列步驟來實作 CREATE DATABASE 語句:

  1. SQL Server會使用模型資料庫的複本來初始化資料庫及其中繼資料。
  2. 將 Service Broker GUID 指派給資料庫。
  3. 資料庫引擎接著會以空白頁面填滿資料庫的其餘部分,但具有記錄資料庫中空間使用方式之內部資料的頁面除外。

最多可以在實例上指定 32,767 個資料庫SQL Server。

每個資料庫都有一個可以在資料庫中執行特殊活動的擁有者。 該擁有者就是建立資料庫的使用者。 使用 ALTER AUTHORIZATION 可以變更資料庫擁有者。

有些資料庫功能需倚賴檔案系統中提供的功能,才能發揮資料庫的完整功能。 一些倚賴檔案系統功能集的功能範例包括:

  • DBCC CHECKDB
  • FileStream
  • 使用 VSS 和檔案快照集來進行的線上備份
  • 資料庫快照集建立
  • 記憶體最佳化資料檔案群組

資料庫檔案與檔案群組

每個資料庫都至少會有兩個檔案 (一個「主要檔案」和一個「交易記錄檔」),以及至少一個檔案群組。 每個資料庫最多可以指定 32,767 個檔案和 32,767 個檔案群組。

當您建立資料庫時,請根據您預期之資料庫中的資料量上限,盡量使資料檔案有足夠的空間。

建議您使用儲存區域網路 (SAN) 、iSCSI 型網路或本機連結磁片來儲存SQL Server資料庫檔案,因為此組態會優化SQL Server效能和可靠性。

資料庫快照集

您可以使用 CREATE DATABASE 陳述式來建立「來源資料庫」的唯讀靜態檢視表,即「資料庫快照集」。 資料庫快照集在交易上與來源資料庫是一致的,因為它是在快照集建立時即存在。 來源資料庫可以有多個快照集。

注意

當您建立資料庫快照集時,CREATE DATABASE 陳述式無法參考記錄檔、離線檔案、還原檔案及已解除功能的檔案。

如果建立資料庫快照集失敗,快照集會受到質疑且必須刪除。 如需詳細資訊,請參閱 DROP DATABASE

每個快照集都會繼續保存,直到利用 DROP DATABASE 加以刪除為止。

如需詳細資訊,請參閱資料庫快照集

資料庫選項

每當您建立資料庫時,系統就會自動設定數個資料庫選項。 如需這些選項的清單,請參閱 ALTER DATABASE SET 選項

模型資料庫和建立新的資料庫

模型資料庫中的所有使用者定義物件都會複製到所有新建立的資料庫中。 您可以將資料表、檢視表、預存程式、資料類型等任何物件新增至 model 要包含在所有新建立資料庫中的資料庫。

CREATE DATABASE <database_name>指定語句時沒有額外的大小參數,主要資料檔案的大小會與資料庫中的主要檔案 model 相同。

除非 FOR ATTACH 指定,否則每個新資料庫都會從 model 資料庫繼承資料庫選項設定。 例如,在您建立的任何新資料庫中, 資料庫選項自動壓縮 會設定為 truemodel 。 如果您變更資料庫中的選項,這些新選項 model 設定會用於您所建立的任何新資料庫中。 變更資料庫中的 model 作業不會影響現有的資料庫。 如果在 CREATE DATABASE 陳述式上指定 FOR ATTACH,新資料庫就會繼承原始資料庫的資料庫選項設定。

檢視資料庫資訊

您可以利用目錄檢視、系統函數和系統預存程序,以傳回資料庫、檔案和檔案群組的相關資訊。 如需詳細資訊,請參閱系統檢視

權限

需要 CREATE DATABASECREATE ANY DATABASEALTER ANY DATABASE 權限。

為了在SQL Server實例上維持對磁片使用的控制,建立資料庫的許可權通常僅限於幾個登入帳戶。

下列範例會將建立資料庫的權限提供給資料庫使用者 Fay。

USE master;
GO
GRANT CREATE DATABASE TO [Fay];
GO

資料和記錄檔的權限

在SQL Server中,會針對每個資料庫的資料和記錄檔設定特定許可權。 每當在資料庫上套用下列作業時,都會設定下列權限:

  • 已附加
  • 已備份
  • 建立時間
  • 已卸離
  • 修改以加入新檔案
  • 已還原

檔案所在的目錄如有開放權限,上述權限可防止檔案遭到意外竄改。

注意

Microsoft SQL Server 2005 Express 版本不會設定資料和記錄檔許可權。

範例

A. 建立資料庫而不指定檔案

下列範例會建立資料庫 mytest 並建立相對應的主要記錄檔和交易記錄檔。 因為 語句沒有 < filespec > 專案,所以主資料庫檔案是資料庫主檔案的大小 model 。 交易記錄會設定為下列值的較大值:512 KB 或主要資料檔案的大小為 25%。 因為沒有指定 MAXSIZE,所以檔案會成長,直到填滿所有可用的磁碟空間為止。 此範例也會示範如何在建立 mytest 資料庫之前,卸除名為 mytest 的資料庫 (若存在)。

USE master;
GO
IF DB_ID (N'mytest') IS NOT NULL
DROP DATABASE mytest;
GO
CREATE DATABASE mytest;
GO
-- Verify the database files and sizes
SELECT name, size, size*1.0/128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'mytest';
GO

B. 建立指定資料和交易記錄檔的資料庫

下列範例會建立資料庫 Sales。 因為未使用關鍵字 PRIMARY,所以第一個檔案 (Sales_dat) 會成為主要檔案。 因為 Sales_dat 檔的 SIZE 參數中沒有指定 MB 或 KB,所以它會使用 MB 並 MB 來配置。 每當建立、修改或卸除使用者資料庫時,都應該備份 Sales_log 檔會以 MB 為單位配置,因為 MB 參數中明確陳述 SIZE 後置詞。

USE master;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;
GO

C. 藉由指定多個資料和交易記錄檔來建立資料庫

下列範例會建立資料庫 Archive,這個資料庫有三個 100-MB 的資料檔案和兩個 100-MB 的交易記錄檔。 主要檔案是清單中的第一個檔案,並以關鍵字 PRIMARY 明確指定。 交易記錄檔是以關鍵字 LOG ON 指定的。 請注意 FILENAME 選項中之檔案的副檔名:.mdf 用於主要資料庫,.ndf 用於次要資料檔案,.ldf 則用於交易記錄檔。 此範例會將此資料庫放在 D: 磁碟機上,而不是與 master 資料庫放在一起。

USE master;
GO
CREATE DATABASE Archive
ON
PRIMARY
    (NAME = Arch1,
    FILENAME = 'D:\SalesData\archdat1.mdf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
    ( NAME = Arch2,
    FILENAME = 'D:\SalesData\archdat2.ndf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
    ( NAME = Arch3,
    FILENAME = 'D:\SalesData\archdat3.ndf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20)
LOG ON
  (NAME = Archlog1,
    FILENAME = 'D:\SalesData\archlog1.ldf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
  (NAME = Archlog2,
    FILENAME = 'D:\SalesData\archlog2.ldf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20) ;
GO

D. 建立具有檔案群組的資料庫

下列範例會建立含有下列檔案群組的資料庫 Sales

  • 含有檔案 Spri1_datSpri2_dat 的主要檔案群組。 這些檔案的 FILEGROWTH 遞增指定為 15%
  • 名為 SalesGroup1 的檔案群組,該檔案群組含有檔案 SGrp1Fi1SGrp1Fi2
  • 名為 SalesGroup2 的檔案群組,該檔案群組含有檔案 SGrp2Fi1SGrp2Fi2

此範例將資料和記錄檔放在不同的磁碟上,藉此改進效能。

USE master;
GO
CREATE DATABASE Sales
ON PRIMARY
( NAME = SPri1_dat,
    FILENAME = 'D:\SalesData\SPri1dat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15% ),
( NAME = SPri2_dat,
    FILENAME = 'D:\SalesData\SPri2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15% ),
FILEGROUP SalesGroup1
( NAME = SGrp1Fi1_dat,
    FILENAME = 'D:\SalesData\SG1Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
( NAME = SGrp1Fi2_dat,
    FILENAME = 'D:\SalesData\SG1Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
FILEGROUP SalesGroup2
( NAME = SGrp2Fi1_dat,
    FILENAME = 'D:\SalesData\SG2Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
( NAME = SGrp2Fi2_dat,
    FILENAME = 'D:\SalesData\SG2Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
    FILENAME = 'E:\SalesLog\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;
GO

E. 附加資料庫

下列範例會先卸離在範例 D 中建立的資料庫 Archive,再利用 FOR ATTACH 子句附加該資料庫。 Archive 定義為具有多個資料檔案和記錄檔。 不過,因為檔案建立之後並未改變位置,所以在 FOR ATTACH 子句中只需要指定主要檔案。 從 2005 SQL Server 2005 (9.x) 開始,任何屬於要附加之資料庫的全文檢索檔案都會與資料庫附加。

USE master;
GO
sp_detach_db Archive;
GO
CREATE DATABASE Archive
  ON (FILENAME = 'D:\SalesData\archdat1.mdf')
  FOR ATTACH ;
GO

F. 建立資料庫快照集

下列範例會建立資料庫快照集 sales_snapshot0600。 因為資料庫快照集是唯讀的,所以不能指定記錄檔。 依照語法規定,會指定來源資料庫中的每個檔案,但不會指定檔案群組。

這個範例中的來源資料庫就是在範例 D 中建立的資料庫 Sales

USE master;
GO
CREATE DATABASE sales_snapshot0600 ON
    ( NAME = SPri1_dat, FILENAME = 'D:\SalesData\SPri1dat_0600.ss'),
    ( NAME = SPri2_dat, FILENAME = 'D:\SalesData\SPri2dt_0600.ss'),
    ( NAME = SGrp1Fi1_dat, FILENAME = 'D:\SalesData\SG1Fi1dt_0600.ss'),
    ( NAME = SGrp1Fi2_dat, FILENAME = 'D:\SalesData\SG1Fi2dt_0600.ss'),
    ( NAME = SGrp2Fi1_dat, FILENAME = 'D:\SalesData\SG2Fi1dt_0600.ss'),
    ( NAME = SGrp2Fi2_dat, FILENAME = 'D:\SalesData\SG2Fi2dt_0600.ss')
AS SNAPSHOT OF Sales ;
GO

G. 建立資料庫並指定定序名稱和選項

下列範例會建立資料庫 MyOptionsTest。 它指定定序名稱,並將 TRUSTYWORTHYDB_CHAINING 選項設為 ON

USE master;
GO
IF DB_ID (N'MyOptionsTest') IS NOT NULL
DROP DATABASE MyOptionsTest;
GO
CREATE DATABASE MyOptionsTest
COLLATE French_CI_AI
WITH TRUSTWORTHY ON, DB_CHAINING ON;
GO
--Verifying collation and option settings.
SELECT name, collation_name, is_trustworthy_on, is_db_chaining_on
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO

H. 附加已移動的全文檢索目錄

下列範例會附加全文檢索目錄 AdvWksFtCat 以及 AdventureWorks2012 資料檔案和記錄檔。 在這個範例中,全文檢索目錄會從預設位置移至新的位置 c:\myFTCatalogs。 資料檔案和記錄檔仍保留在它們的預設位置中。

USE master;
GO
--Detach the AdventureWorks2012 database
sp_detach_db AdventureWorks2012;
GO
-- Physically move the full text catalog to the new location.
--Attach the AdventureWorks2012 database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks2012 ON
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_data.mdf'),
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_log.ldf'),
    (FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO

I. 建立指定資料列檔案群組和兩個 FILESTREAM 檔案群組的資料庫

下列範例會建立 FileStreamDB 資料庫。 此資料庫是使用一個資料列檔案群組和兩個 FILESTREAM 檔案群組所建立。 每個檔案群組都包含一個檔案:

  • FileStreamDB_data 包含資料列資料, 它包含一個檔案 FileStreamDB_data.mdf (具有預設路徑)。
  • FileStreamPhotos 包含 FILESTREAM 資料。 其包含兩個 FILESTREAM 資料容器:一個是位於 FSPhotosC:\MyFSfolder\Photos,一個是位於 FSPhotos2D:\MyFSfolder\Photos。 它會標示為預設的 FILESTREAM 檔案群組。
  • FileStreamResumes 包含 FILESTREAM 資料。 其包含一個 FILESTREAM 資料容器 FSResumes (位於 C:\MyFSfolder\Resumes)。
USE master;
GO
-- Get the SQL Server data path.
DECLARE @data_path nvarchar(256);
SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
      FROM master.sys.master_files
      WHERE database_id = 1 AND file_id = 1);

 -- Execute the CREATE DATABASE statement.
EXECUTE ('CREATE DATABASE FileStreamDB
ON PRIMARY
    (
    NAME = FileStreamDB_data
    ,FILENAME = ''' + @data_path + 'FileStreamDB_data.mdf''
    ,SIZE = 10MB
    ,MAXSIZE = 50MB
    ,FILEGROWTH = 15%
    ),
FILEGROUP FileStreamPhotos CONTAINS FILESTREAM DEFAULT
    (
    NAME = FSPhotos
    ,FILENAME = ''C:\MyFSfolder\Photos''
-- SIZE and FILEGROWTH should not be specified here.
-- If they are specified an error will be raised.
, MAXSIZE = 5000 MB
    ),
    (
      NAME = FSPhotos2
      , FILENAME = ''D:\MyFSfolder\Photos''
      , MAXSIZE = 10000 MB
     ),
FILEGROUP FileStreamResumes CONTAINS FILESTREAM
    (
    NAME = FileStreamResumes
    ,FILENAME = ''C:\MyFSfolder\Resumes''
    )
LOG ON
    (
    NAME = FileStream_log
    ,FILENAME = ''' + @data_path + 'FileStreamDB_log.ldf''
    ,SIZE = 5MB
    ,MAXSIZE = 25MB
    ,FILEGROWTH = 5MB
    )'
);
GO

J. 建立具有具有多個檔案之 FILESTREAM 檔案群組的資料庫

下列範例會建立 BlobStore1 資料庫。 此資料庫是使用一個資料列檔案群組和一個 FILESTREAM 檔案群組 FS 所建立。 FILESTREAM 檔案群組包含兩個檔案:FS1FS2。 然後,此範例會將第三個檔案 FS3 加入至 FILESTREAM 檔案群組,藉以改變資料庫。

USE master;
GO

CREATE DATABASE [BlobStore1]
CONTAINMENT = NONE
ON PRIMARY
(
    NAME = N'BlobStore1',
    FILENAME = N'C:\BlobStore\BlobStore1.mdf',
    SIZE = 100MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 1MB
),
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT
(  
    NAME = N'FS1',
    FILENAME = N'C:\BlobStore\FS1',
    MAXSIZE = UNLIMITED
),
(
    NAME = N'FS2',
    FILENAME = N'C:\BlobStore\FS2',
    MAXSIZE = 100MB
)
LOG ON
(
    NAME = N'BlobStore1_log',
    FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',
    SIZE = 100MB,
    MAXSIZE = 1GB,
    FILEGROWTH = 1MB
);
GO

ALTER DATABASE [BlobStore1]
ADD FILE
(
    NAME = N'FS3',
    FILENAME = N'C:\BlobStore\FS3',
    MAXSIZE = 100MB
)
TO FILEGROUP [FS];
GO

下一步

* SQL Database *

 

SQL Database

概觀

在 Azure SQL Database 中,此語句可以與Azure SQL伺服器搭配使用,在彈性集區中建立單一資料庫或資料庫。 使用此陳述式,您可以指定資料庫名稱、定序、大小上限、版本、服務目標,以及 (如果適用的話) 新資料庫的彈性集區。 它也可以用來在彈性集區中建立資料庫。 此外,它可以用來在其他 SQL Database 伺服器上建立資料庫複本。

語法

建立資料庫

如需語法慣例的詳細資訊,請參閱 Transact-SQL 語法慣例

CREATE DATABASE database_name [ COLLATE collation_name ]
{
  (<edition_options> [, ...n])
}
[ WITH <with_options> [,..n]]
[;]

<with_options> ::=
{
  CATALOG_COLLATION = { DATABASE_DEFAULT | SQL_Latin1_General_CP1_CI_AS }
  | BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' }
  | LEDGER = {ON | OFF }
}

<edition_options> ::=
{

  MAXSIZE = { 100 MB | 500 MB | 1 ... 1024 ... 4096 GB }
  | ( EDITION = { 'Basic' | 'Standard' | 'Premium' | 'GeneralPurpose' | 'BusinessCritical' | 'Hyperscale' }
  | SERVICE_OBJECTIVE =
    { 'Basic' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4'| 'S6'| 'S7'| 'S9'| 'S12'
      | 'P1' | 'P2' | 'P4'| 'P6' | 'P11' | 'P15'
      | 'BC_DC_n'
      | 'BC_Gen5_n' 
      | 'BC_M_n' 
      | 'GP_DC_n'
      | 'GP_Fsv2_n' 
      | 'GP_Gen5_n' 
      | 'GP_S_Gen5_n' 
      | 'HS_DC_n'
      | 'HS_Gen5_n'
      | 'HS_MOPRMS_n' 
      | 'HS_PRMS_n' 
      | { ELASTIC_POOL(name = <elastic_pool_name>) } })
}

複製資料庫

CREATE DATABASE database_name
    AS COPY OF [source_server_name.] source_database_name
    [ ( SERVICE_OBJECTIVE =
      { 'Basic' |'S0' | 'S1' | 'S2' | 'S3'| 'S4'| 'S6'| 'S7'| 'S9'| 'S12'
      | 'P1' | 'P2' | 'P4'| 'P6' | 'P11' | 'P15'
      | 'GP_Gen5_n'
      | 'GP_Fsv2_n'
      | 'GP_S_Gen5_n'
      | 'BC_Gen5_n'
      | 'BC_M_n'
      | 'HS_Gen5_n'
      | 'HS_PRMS_n'
      | 'HS_MOPRMS_n'
      | { ELASTIC_POOL(name = <elastic_pool_name>) } })
   ]
[;]

引數

database_name

新資料庫的名稱。 此名稱在SQL Server上必須是唯一的,且符合識別碼的SQL Server規則。 如需詳細資訊,請參閱識別碼

Collation_name

指定資料庫的預設定序。 定序名稱可以是 Windows 定序名稱或 SQL 定序名稱。 如果未指定,則會將資料庫指派預設定序,即 SQL_Latin1_General_CP1_CI_AS。

如需有關 Windows 和 SQL 定序名稱的詳細資訊,請參閱 COLLATE (Transact-SQL)

CATALOG_COLLATION

指定中繼資料目錄的預設定序。 DATABASE_DEFAULT 指定將用於系統檢視和系統資料表的中繼資料目錄加以定序,以符合資料庫的預設定序。 這是在 SQL Server 中發現的行為。

SQL_Latin1_General_CP1_CI_AS 指定將用於系統檢視和資料表的中繼資料目錄定序為固定 SQL_Latin1_General_CP1_CI_AS 定序。 如果未指定,這就是 Azure SQL Database 上的預設設定。

BACKUP_STORAGE_REDUNDANCY

指定複寫資料庫的時間點還原和長期保留備份的方式。 異地還原或從區域中斷復原的能力,只有在使用「異地」備份儲存體備援建立資料庫時才可使用。 除非明確指定,否則以 T-SQL 建立的資料庫會使用異地備援備份儲存體。

重要

Azure SQL 資料庫的 BACKUP_STORAGE_REDUNDANCY 選項在巴西南部推出公開預覽,且僅在 Azure 區域的東南亞正式推出。

LEDGER = {ON |OFF }

當設定為 ON 時,它會建立總帳資料庫,其中會保護所有使用者資料的完整性。 只有總帳資料表可以在總帳資料庫中建立。 預設值為 OFF。 建立資料庫之後,就無法變更選項的值 LEDGER 。 如需詳細資訊,請參閱 設定總帳資料庫

MAXSIZE

指定資料庫的大小上限。 MAXSIZE 必須對指定的 EDITION (服務層級) 有效。

以下是服務層級支援的 MAXSIZE 值和預設值 (D) 。

注意

MAXSIZE 引數不適用於超大規模服務層中的單一資料庫。 超大規模層資料庫會視需要成長,最多 100 TB。 SQL Database 服務會自動新增儲存體;您不需要設定大小上限。

SQL Database 伺服器上適用於單一和集區資料庫的 DTU 模型

MAXSIZE 基本 S0-S2 S3-S12 P1-P6 P11-P15
100 MB
500 MB
1 GB
2 GB √ (D)
5 GB N/A
10 GB N/A
20 GB N/A
30 GB N/A
40 GB N/A
50 GB N/A
100 GB N/A
150 GB N/A
200 GB N/A
250 GB N/A √ (D) √ (D)
300 GB N/A N/A
400 GB N/A N/A
500 GB N/A N/A √ (D)
750 GB N/A N/A
1024 GB N/A N/A √ (D)
從 1024 GB 至最大 4096 GB (以每 256 GB 的大小遞增)* N/A N/A N/A N/A

* P11 和 P15 允許 MAXSIZE 最多 4 TB,1024 GB 是預設大小。 P11 和 P15 最多可使用 4 TB 的隨附儲存體,且不另收費。 在進階層中,大於 1 TB 的 MAXSIZE 目前可用於下列區域:美國東部 2、美國西部、US Gov 維吉尼亞州、西歐、德國中部、東南亞、日本東部、澳大利亞東部、加拿大中部和加拿大東部。 如需 DTU 模型的資源限制的額外詳細資訊,請參閱 DTU 資源限制 \(部分機器翻譯\)。

如果指定,則 DTU 模型的 MAXSIZE 值必須是上表中所指定服務層級的有效值。

如需虛擬核心購買模型中的資料大小上限和 tempdb 大小等限制,請參閱 單一資料庫的資源限制 文章或 彈性集區的資源限制

當使用 vCore 模型時,如果未設定 MAXSIZE 值,預設值為 32 GB。 如需有關虛擬核心模型資源限制的其他詳細資訊,請參閱虛擬核心資源限制

EDITION

指定資料庫的服務層。

單一資料庫與集區資料庫。 可用的值為:'Basic'、'Standard'、'Premium'、'GeneralPurpose'、'BusinessCritical' 和 'Hyperscale'。

以下規則會套用到 MAXSIZE 和 EDITION 引數:

  • 如果指定了 EDITION 但是未指定 MAXSIZE,就會使用版本的預設值。 例如,如果 EDITION 設定為 Standard,且未指定 MAXSIZE,則 MAXSIZE 會自動設定為 250 MB。
  • 如果 MAXSIZE 和 EDITION 皆未指定,則 EDITION 會設定為 GeneralPurpose 而 MAXSIZE 則設定為 32 GB。

SERVICE_OBJECTIVE

指定計算大小和服務目標。

  • 針對 DTU 購買模型: S0 、、 S1S2S3 、、 P2S7S9S6S4P1P4S12P6 、、、 P11P15
  • 如需最新的虛擬核心購買模型,請選擇階層,並從預設值清單中提供虛擬核心數目,其中虛擬核心數目為 n 。 請參閱 單一資料庫的資源限制彈性集區的資源限制
    • 例如:
    • GP_Gen5_8 適用于一般用途標準系列 (Gen5) 計算,8 個虛擬核心。
    • GP_S_Gen5_8適用于 常規用途 無伺服器標準系列 (Gen5) 計算,8 個虛擬核心。
    • HS_Gen5_8 適用于超大規模資料庫 - 布建的計算 - 標準系列 (Gen5) ,8 個虛擬核心。

如需服務目標描述和大小、版本及服務目標組合的詳細資訊,請參閱 Azure SQL Database 服務層。 如果 EDITION 不支援指定的 SERVICE_OBJECTIVE,您就會收到錯誤。 若要將 SERVICE_OBJECTIVE 值從某一層變更為另一層 (例如,從 S1 到 P1),您還必須變更 EDITION 值。 已移除 PRS 服務目標的支援。

ELASTIC_POOL (名稱 = < elastic_pool_name >)

適用範圍: 僅單一和集區資料庫。 不適用於超大規模服務層中的資料庫。 若要在彈性資料庫集區中建立新資料庫,請將資料庫的 SERVICE_OBJECTIVE 設定為 ELASTIC_POOL 並提供集區的名稱。 如需詳細資訊,請參閱建立和管理 SQL Database 彈性資料庫集區

AS COPY OF [source_server_name.]source_database_name

適用範圍: 僅單一和集區資料庫。 若要將資料庫複製到相同或不同的SQL Database伺服器。

source_server_name源資料庫所在SQL Database伺服器的名稱。 當源資料庫和目的地資料庫位於相同的SQL Database伺服器上時,這個參數是選擇性的。

注意

AS COPY OF 引數不支援唯一的完整網域名稱。 換句話說,如果您伺服器的完整網域名稱為 serverName.database.windows.net,則在資料庫複製期間僅可使用 serverName

source_database_name

要複製的資料庫名稱。

備註

Azure SQL 資料庫中的資料庫有數個建立資料庫時所設定的預設設定。 如需這些預設設定的詳細資訊,請參閱 DATABASEPROPERTYEX 中的值清單。

MAXSIZE 提供限制資料庫大小的功能。 如果資料庫的大小達到其 MAXSIZE,您將收到錯誤碼 40544。 發生這種情況時,您就無法插入或更新資料,或是建立新物件 (例如資料表、預存程序、檢視和函數)。 不過,您仍然可以讀取和刪除資料、截斷資料表、卸除資料表和索引,以及重建索引。 然後您可以將 MAXSIZE 升級為大於目前資料庫大小的值,或是刪除某些資料以釋出儲存空間。 插入新資料之前,可能會有 15 分鐘的延遲。

若要稍後變更大小、版本或服務目標值,請使用ALTER DATABASE (Azure SQL Database)

只有在資料庫建立期間才可使用 CATALOG_COLLATION 引數。

資料庫複本

適用範圍: 僅單一和集區資料庫。

使用 CREATE DATABASE 陳述式複製資料庫是一項非同步作業。 因此,在複製程式的完整期間,不需要與SQL Database伺服器的連線。 語句 CREATE DATABASE 會在 建立 中的 sys.databases 專案之後,但在資料庫複製作業完成之前,將控制權傳回給使用者。 換句話說,CREATE DATABASE 陳述式會在資料庫複製仍進行時成功傳回。

  • 監視SQL Database伺服器上的複製程式:查詢 percentage_completereplication_state_descdm_database_copies中的 或 資料行,或 statesys.databases檢視中的資料行。 sys.dm_operation_status 檢視也可使用,因為其會傳回資料庫作業 (包括資料庫複製) 的狀態。

當複製程序順利完成時,目的地資料庫的交易會與來源資料庫一致。

下列語法和語意規則適用於使用 AS COPY OF 引數的情況:

  • 複製目標的來源伺服器名稱和伺服器名稱可能相同或不同。 兩個名稱相同時,則這是是選擇性參數,而且根據預設會使用目前工作階段的伺服器內容。
  • 來源和目的地資料庫名稱必須指定、唯一且符合識別碼的SQL Server規則。 如需詳細資訊,請參閱識別碼
  • CREATE DATABASE語句必須在將建立新資料庫之SQL Database伺服器的資料庫內容 master 中執行。
  • 複製完成後,目的地資料庫必須做為獨立資料庫管理。 您可以在與來源資料庫不相關的情況下,單獨對新資料庫執行 ALTER DATABASEDROP DATABASE 陳述式。 您也可以將新資料庫複製到另一個新資料庫。
  • 當資料庫複本正在進行時,源資料庫可能會繼續存取。

如需詳細資訊,請參閱使用 Transact-SQL 建立 Azure SQL 資料庫的複本

重要

根據預設,會使用與源資料庫相同的備份儲存體備援來建立資料庫複本。 不支援透過 T-SQL 在建立資料庫複本時變更備份儲存體備援。

權限

若要建立資料庫,使用者登入必須是下列其中一個主體:

  • 伺服器層級主體登入
  • 本機 Azure SQL Server 的 Azure AD 系統管理員
  • dbmanager 資料庫角色成員的登入

使用 CREATE DATABASE ... AS COPY OF 語法的額外需求: 在本機伺服器上執行陳述式的登入必須至少也是來源伺服器上的 db_owner。 如果登入是以SQL Server驗證為基礎,在本機伺服器上執行 語句的登入必須在來源SQL Database伺服器上具有相符的登入,且名稱與密碼相同。

範例

簡單範例

建立資料庫的簡單範例。

CREATE DATABASE TestDB1;

具有版本的簡單範例

建立一般用途資料庫的簡單範例。

CREATE DATABASE TestDB2
( EDITION = 'GeneralPurpose' );

其他選項的範例

使用多個選項的範例。

CREATE DATABASE hito
COLLATE Japanese_Bushu_Kakusu_100_CS_AS_KS_WS
( MAXSIZE = 500 MB, EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8' ) ;

建立資料庫複本

建立資料庫複本的範例。

適用範圍: 僅單一和集區資料庫。

CREATE DATABASE escuela
AS COPY OF school;

在彈性集區中建立資料庫

在名為 S3M100 的集區中建立新的資料庫:

適用範圍: 僅單一和集區資料庫。

CREATE DATABASE db1 ( SERVICE_OBJECTIVE = ELASTIC_POOL ( name = S3M100 ) ) ;

在另一個邏輯伺服器上建立資料庫複本

下列範例會在單一資料庫的 P2 計算大小 (服務目標) 中建立名為 db_copy 的資料庫複本 db_original 。 不論 db_original 是否在彈性集區中,還是單一資料庫的計算大小 (服務目標) ,都是如此。

適用範圍: 僅單一和集區資料庫。

CREATE DATABASE db_copy
  AS COPY OF ozabzw7545.db_original ( SERVICE_OBJECTIVE = 'P2' );

下列範例會在名為 ep1 的彈性集區中建立名為 的資料庫 db_copydb_original 複本。 不論 db_original 是否在彈性集區中,還是單一資料庫的計算大小 (服務目標) ,都是如此。 如果 db_original 位於具有不同名稱的彈性集區中,則 db_copy 仍會在 中 ep1 建立 。

適用範圍: 僅單一和集區資料庫。

CREATE DATABASE db_copy
  AS COPY OF ozabzw7545.db_original
  (SERVICE_OBJECTIVE = ELASTIC_POOL( name = ep1 ) ) ;

使用指定的目錄定序值建立資料庫

下列範例會在資料庫建立期間,將目錄定序設定為 DATABASE_DEFAULT ,其會將目錄定序設定為與資料庫定序相同。

CREATE DATABASE TestDB3 COLLATE Japanese_XJIS_140 (MAXSIZE = 100 MB, EDITION = 'Basic')
  WITH CATALOG_COLLATION = DATABASE_DEFAULT

使用區域備援來建立備份的資料庫

下列範例會設定資料庫備份的區域備援。 時間點還原備份與長期保留備份 (如果已設定) 將會使用相同的備份儲存體備援。

CREATE DATABASE test_zone_redundancy 
  WITH BACKUP_STORAGE_REDUNDANCY = 'ZONE';

建立總帳資料庫

CREATE DATABASE MyLedgerDB ( EDITION = 'GeneralPurpose' ) WITH LEDGER = ON;

下一步

* SQL 受管理執行個體 *

 

Azure SQL 受控執行個體

概觀

在 Azure SQL 受控執行個體中,此陳述式可用來建立資料庫。 在受控執行個體上建立資料庫時,您會指定資料庫名稱和定序。

語法

如需語法慣例的詳細資訊,請參閱 Transact-SQL 語法慣例

CREATE DATABASE database_name [ COLLATE collation_name ]
[;]

重要

若要對受控執行個體中的資料庫新增檔案或設定內含項目,請使用 ALTER DATABASE 陳述式。

引數

database_name

新資料庫的名稱。 此名稱在 SQL Server 上必須是唯一的,且符合識別碼的SQL Server規則。 如需詳細資訊,請參閱識別碼

Collation_name

指定資料庫的預設定序。 定序名稱可以是 Windows 定序名稱或 SQL 定序名稱。 如果未指定,則會將資料庫指派預設定序,即 SQL_Latin1_General_CP1_CI_AS。

如需有關 Windows 和 SQL 定序名稱的詳細資訊,請參閱 COLLATE (Transact-SQL)

備註

Azure SQL 資料庫中的資料庫有數個建立資料庫時所設定的預設設定。 如需這些預設設定的詳細資訊,請參閱 DATABASEPROPERTYEX 中的值清單。

重要

語句 CREATE DATABASE 必須是 Transact-SQL 批次中唯一的語句。

以下是 CREATE DATABASE 的限制:

  • 無法定義檔案和檔案群組。

  • 不支援 WITH 選項。

    提示

    因應措施為使用 ALTER DATABASE。 在 CREATE DATABASE 之後,以設定資料庫選項和新增檔案。

權限

若要建立資料庫,登入必須為下列其中一項:

  • 伺服器層級主體登入
  • 本機 Azure SQL Server 的 Azure AD 系統管理員
  • dbcreator 資料庫角色成員的登入

範例

簡單範例

建立資料庫的簡單範例。

CREATE DATABASE TestDB1;

下一步

* Azure Synapse
分析*

 

Azure Synapse Analytics

概觀

在Azure Synapse中,此語句可以搭配 Azure SQL 資料庫伺服器使用,以建立專用 SQL 集區。 使用此陳述式,您可以指定資料庫名稱、定序、大小上限、版本及服務目標。

  • 使用 Gen2 服務等級, (先前稱為 SQL DW) 的獨立專用 SQL 集區支援 CREATE DATABASE。
  • Azure Synapse Analytics 工作區中的專用 SQL 集區不支援 CREATE DATABASE。 請改用 Azure 入口網站
  • Azure Synapse Analytics 中,無伺服器 SQL 集區支援 CREATE DATABASE。

Syntax

如需語法慣例的詳細資訊,請參閱 Transact-SQL 語法慣例

CREATE DATABASE database_name [ COLLATE collation_name ]
(
    [ MAXSIZE = {
          250 | 500 | 750 | 1024 | 5120 | 10240 | 20480 | 30720
        | 40960 | 51200 | 61440 | 71680 | 81920 | 92160 | 102400
        | 153600 | 204800 | 245760
      } GB ,
    ]
    EDITION = 'datawarehouse',
    SERVICE_OBJECTIVE = {
          'DW100c' | 'DW200c' | 'DW300c' | 'DW400c' | 'DW500c'
        | 'DW1000c' | 'DW1500c' | 'DW2000c' | 'DW2500c' | 'DW3000c' | 'DW5000c'
        | 'DW6000c' | 'DW7500c' | 'DW10000c' | 'DW15000c' | 'DW30000c'
    }
)
[;]

引數

database_name

新資料庫的名稱。 此名稱在 SQL Server 上必須是唯一的,可以同時裝載 Azure SQL Database 資料庫和 Azure Synapse Analytics 資料庫,並符合識別碼的SQL Server規則。 如需詳細資訊,請參閱識別碼

collation_name

指定資料庫的預設定序。 定序名稱可以是 Windows 定序名稱或 SQL 定序名稱。 如果未指定,則會將資料庫指派預設定序,即 SQL_Latin1_General_CP1_CI_AS。

如需有關 Windows 和 SQL 定序名稱的詳細資訊,請參閱 COLLATE (Transact-SQL)

MAXSIZE

預設為 245,760 GB (240 TB)。

適用範圍: 針對「計算第 1 代」最佳化

資料庫的允許大小上限。 資料庫不可增大超過 MAXSIZE。

適用範圍: 針對「計算第 2 代」最佳化

資料庫中資料列存放區資料的允許大小上限。 儲存在資料列存放區資料表的資料、資料行存放區索引的差異存放區,或叢集資料行存放區索引的非叢集索引,不可增大超過 MAXSIZE。 壓縮成資料行存放區格式的資料大小沒有大小限制,因此不受 MAXSIZE 限制。

指定資料庫的服務層。 針對 Azure Synapse Analytics,請使用 datawarehouse

SERVICE_OBJECTIVE

指定計算大小 (服務目標)。 Gen2 的服務等級會以 cDWU) (計算資料倉儲單位來測量,例如 DW2000c 。 Gen1 服務等級會以 DWU 來測量,例如 DW2000 。 如需適用於 Azure Synapse 之服務目標的詳細資訊,請參閱資料倉儲單位 (DWU) \(部分機器翻譯\)。 (不再列出) 的 Gen1 服務目標,您可能會收到錯誤: Azure SQL Data Warehouse Gen1 has been deprecated in this region. Please use SQL Analytics in Azure Synapse.

備註

使用 DATABASEPROPERTYEX 以查看資料庫屬性。

使用 ALTER DATABASE - Azure Synapse Analytics 來在稍後變更大小上限或服務目標值。

Azure Synapse 已設定為 COMPATIBILITY_LEVEL 130 且無法變更。 如需詳細資訊,請參閱改善 Azure SQL 資料庫中相容性層級 130 的查詢效能

權限

必要權限:

  • 由佈建程序建立的伺服器層級主體登入,或
  • dbmanager 資料庫角色的成員。

錯誤處理

如果資料庫的大小達到 MAXSIZE,您將收到錯誤碼 40544。 若發生這種情況,您就無法插入和更新資料,或是建立新物件 (例如資料表、預存程序、檢視和函式)。 您仍然可以讀取和刪除資料、截斷資料表、卸除資料表和索引,以及重建索引。 然後您可以將 MAXSIZE 升級為大於目前資料庫大小的值,或是刪除某些資料以釋出儲存空間。 插入新資料之前,可能會有 15 分鐘的延遲。

限制事項

您必須連線到 master 資料庫,才能建立新的資料庫。

語句 CREATE DATABASE 必須是 Transact-SQL 批次中的唯一語句。

在資料庫建立後,您就無法變更資料庫定序。

範例:Azure Synapse Analytics

A. 簡單範例

建立獨立專用 SQL 集區的簡單範例, (先前稱為 SQL DW) 。 這會建立大小最小的資料庫, (10,240 GB) 、預設定序 (SQL_Latin1_General_CP1_CI_AS) ,以及最小 Gen2 服務目標 (DW100c) 。

CREATE DATABASE TestDW
(EDITION = 'datawarehouse', SERVICE_OBJECTIVE='DW100c');

B. 以所有選項建立資料倉儲資料庫

建立 10 TB 獨立專用 SQL 集區的範例, (先前稱為 SQL DW) 。

CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS
(MAXSIZE = 10240 GB, EDITION = 'datawarehouse', SERVICE_OBJECTIVE = 'DW1000c');

C. Synapse Analytics 無伺服器 SQL 集區中的簡單範例

這會在無伺服器集區中建立資料庫,並指定定序 (Latin1_General_100_CI_AS_KS_WS) 。

CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS

下一步

* 分析平臺
系統 (PDW) *

 

分析平台系統

概觀

在 Analytics Platform System 中,此語句是用來在 Analytics Platform System 設備上建立新的資料庫。 使用此陳述式建立和設備資料庫關聯的所有檔案,以及設定資料庫表格和交易記錄的大小上限與自動成長選項。

語法

如需語法慣例的詳細資訊,請參閱 Transact-SQL 語法慣例

CREATE DATABASE database_name
WITH (
    [ AUTOGROW = ON | OFF , ]
    REPLICATED_SIZE = replicated_size [ GB ] ,
    DISTRIBUTED_SIZE = distributed_size [ GB ] ,
    LOG_SIZE = log_size [ GB ] )
[;]

引數

database_name

新資料庫的名稱。 如需允許資料庫名稱的詳細資訊,請參閱 Analytics Platform System (PDW) 產品檔中的和。

AUTOGROW = ON | OFF

指定此資料庫的 replicated_sizedistributed_sizelog_size 參數是否將會視需要自動成長至超出其指定大小。 預設值是 OFF

如果 AUTOGROW 設為 ON,在每次插入資料、更新資料或進行其他動作而導致所需儲存空間大於已配置大小時,replicated_sizedistributed_sizelog_size 就會視需要成長 (不在初始指定大小的區塊中)。

如果 AUTOGROW 設為 OFF,大小就不會自動成長。 嘗試需要 replicated_sizedistributed_sizelog_size 成長超過其指定值的動作時,Analytics Platform System (PDW) 會傳回錯誤。

只能針對所有大小將 AUTOGROW 設為 ON 或 OFF。 例如,如果為 log_size 將 AUTOGROW 設為 ON,就不得不為 replicated_size 將 AUTOGROW 設為 ON。

replicated_size [ GB ]

一個正數。 設定配置給「每個計算節點上」複寫資料表和相對應資料的總空間大小 (以整數或小數 GB 為單位)。 如需最低和最大 replicated_size 需求,請參閱 Analytics Platform System (PDW) 產品檔中的。

如果 AUTOGROW 設為 ON,將允許複寫資料表成長至超出此限制。

當 AUTOGROW 設為 OFF 時,如果使用者嘗試建立新的複寫資料表、在現有的複寫資料表中插入資料,或更新現有的複寫資料表而導致大小增加至超出 replicated_size,便會傳回錯誤。

distributed_size [ GB ]

一個正數。 配置給「跨設備」分散式資料表 (和相對應資料) 的總空間大小 (以整數或小數 GB 為單位)。 如需最低和最大 distributed_size 需求,請參閱 Analytics Platform System (PDW) 產品檔中的。

如果 AUTOGROW 設為 ON,將允許分散式資料表成長至超出此限制。

當 AUTOGROW 設為 OFF 時,如果使用者嘗試建立新的分散式資料表、在現有的分散式資料表中插入資料,或更新現有的分散式資料表而導致大小增加至超出 distributed_size,便會傳回錯誤。

log_size [ GB ]

一個正數。 跨設備交易記錄的大小 (以整數或十進位 GB 為單位)。

如需最低和最大 log_size 需求,請參閱 Analytics Platform System (PDW) 產品檔中的。

如果 AUTOGROW 設為 ON,會允許記錄檔成長至超過此限制。 使用 DBCC SHRINKLOG (Azure Synapse Analytics) 陳述式,將記錄檔大小縮小至其原始大小。

當 AUTOGROW 設為 OFF 時,如果出現會導致個別計算節點的記錄檔大小增加至超出 log_size 的任何動作,將會向使用者傳回錯誤。

權限

CREATE ANY DATABASE需要資料庫中的許可權 master ,或系統管理員固定伺服器角色的成員資格。

下列範例會將建立資料庫的權限提供給資料庫使用者 Fay。

USE master;
GO
GRANT CREATE ANY DATABASE TO [Fay];
GO

備註

資料庫是使用資料庫相容性層級 120 建立的,這是 SQL Server 2014 (12.x) 的相容性層級。 這可確保資料庫能夠使用 PDW 使用的所有 SQL Server 2014 (12.x) 功能。

限制事項

在明確的交易中,並不允許使用 CREATE DATABASE 陳述式。 如需詳細資訊,請參閱陳述式

如需資料庫上最小和最大條件約束的資訊,請參閱 Analytics Platform System (PDW) 產品檔中的。

建立資料庫時,「每個計算節點上」都必須有足夠的可用空間,以配置下列大小的總和:

  • SQL Server具有資料表大小replicated_table_size的資料庫。
  • SQL Server資料庫,其中資料表的大小 (distributed_table_size/計算節點數目) 。
  • SQL Server記錄 (log_size/計算節點數目) 的大小。

鎖定

在 DATABASE 物件上採取共用鎖定。

中繼資料

在這項作業成功之後,sys.databasessys.objects 中繼資料檢視中將會顯示此資料庫的項目。

範例:Analytics Platform System (PDW)

A. 基本資料庫建立範例

以下範例會建立資料庫 mytest,其儲存區配置為每一計算節點具備 100 GB 以用於複寫資料表、每一設備 500 GB 以用於分散式資料表,以及每一設備 100 GB 以用於交易記錄。 在這個範例中,AUTOGROW 預設為關閉。

CREATE DATABASE mytest
  WITH
    (REPLICATED_SIZE = 100 GB,
    DISTRIBUTED_SIZE = 500 GB,
    LOG_SIZE = 100 GB );

以下範例會建立與上述參數相同的資料庫 mytest,但 AUTOGROW 已開啟。 這可以讓資料庫成長至超出指定的大小參數。

CREATE DATABASE mytest
  WITH
    (AUTOGROW = ON,
    REPLICATED_SIZE = 100 GB,
    DISTRIBUTED_SIZE = 500 GB,
    LOG_SIZE = 100 GB);

B. 建立具有部分 GB 大小的資料庫

以下範例會建立 AUTOGROW 設為關閉的資料庫 mytest,其儲存區配置為每一計算節點具備 1.5 GB 以用於複寫資料表、每一設備 5.25 GB 以用於分散式資料表,以及每一設備 10 GB 以用於交易記錄,。

CREATE DATABASE mytest
  WITH
    (REPLICATED_SIZE = 1.5 GB,
    DISTRIBUTED_SIZE = 5.25 GB,
    LOG_SIZE = 10 GB);

下一步