分享方式:


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。 主要檔案群組中的檔案清單後面可以接著一份選擇性的 <filegroup> 項目清單 (以逗號分隔),其中定義使用者檔案群組及其檔案。

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 <option>

<filestream_option>

NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }

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

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

Description
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) 和更新版本

如需此選項的完整描述,請參閱 轉換非搜尋字伺服器組態選項

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

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

DB_CHAINING { OFF | ON }

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

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

重要

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

若要設定這個選項,則需要有系統管理員 (sysadmin) 固定伺服器角色的成員資格。 DB_CHAINING 選項不得在下列系統資料庫上設定:mastermodeltempdb

TRUSTWORTHY { OFF | ON }

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

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

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

根據預設,除了 msdb 資料庫以外,所有的系統資料庫都會將 TRUSTWORTHY 設為 OFF。 modeltempdb 資料庫的這個值不可變更。 建議您絕對不要將 master 資料庫的 TRUSTWORTHY 選項設為 ON。

PERSISTENT_LOG_BUFFER=ON ( DIRECTORY_NAME='' )

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

LEDGER = {ON | OFF }

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

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

指定資料庫是藉由附加一組現有的作業系統檔案所建立。 必須有一個指定主要檔案的 <filespec> 項目。 任何檔案如果其路徑與第一次建立資料庫或最後一次附加資料庫時的路徑不同,則其 <filespec> 項目是唯一所需的其他 filespec 項目。 您必須針對這些檔案指定 <filespec> 項目。

FOR ATTACH 需要下列項目:

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

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

注意

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

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

若將包含 FILESTREAM "Directory name" 選項的資料庫附加至 SQL Server 執行個體,將會提示 SQL Server 驗證 Database_Directory 名稱是否為唯一。 如果不是,作業會ATTACH失敗,並出現錯誤 。 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。 換句話說,在 sys.databases 目錄檢視中,訊息傳遞已啟動且 is_broker_enabled 設為 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 資料庫引擎必須升級至至少 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

注意

如果記錄檔是可用的,資料庫引擎就會使用這些檔案,而不會重建記錄檔。

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\MyFilestreamData,則在您執行 ALTER DATABASE 之前,C:\MyFiles 必須存在;但是 MyFilestreamData 資料夾不得存在。

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

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

SIZE size

指定檔案的大小。

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

size

這是檔案的初始大小。

未提供主要檔案的 size 時,資料庫引擎會使用 model 資料庫中主要檔案的大小。 model 資料庫的預設大小是 8 MB (從 SQL Server 2016 (13.x) 開始) 或 1 MB (適用於舊版)。 已指定次要資料檔或記錄檔,但未指定檔案的 size 時,資料庫引擎會將檔案大小設定為 8 MB (從 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 的值,請使用較大的單位。

無限

指定檔案會成長到磁碟已滿為止。 在 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。
自 SQL Server 2005 (9.x) 起 資料 1 MB。 記錄檔 10%。
在 SQL Server 2005 (9.x) 之前 資料 10%。 記錄檔 10%。

<filegroup>

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

FILEGROUP filegroup_name

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

filegroup_name

filegroup_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 所指定來源資料庫的資料庫快照集。 該快照集和來源資料庫必須位於相同的執行個體上。

在 SQL Server 2019 之前,資料庫快照集的源資料庫不能包含MEMORY_OPTIMIZED_DATA檔案群組。 SQL Server 2019 已新增記憶體內部資料庫快照集的支援。

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

備註

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

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

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

  1. SQL Server 會使用 model 資料庫的複本將資料庫及其中繼資料初始化。
  2. 將 Service Broker GUID 指派給資料庫。
  3. 之後,資料庫引擎就會在其餘的資料庫中填入空白頁面,但不包括含有記錄資料庫中空間使用方式之內部資料的頁面。

在 SQL Server 的一個執行個體上,最多可以指定 32,767 個資料庫。

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

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

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

資料庫檔案與檔案群組

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

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

建議您利用存放區域網路 (SAN)、iSCSI 型網路或本機連接的磁碟來儲存 SQL Server 資料庫檔案,因為這個組態可使 SQL Server 效能和可靠性最佳化。

資料庫快照集

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

注意

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

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

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

如需詳細資訊,請參閱資料庫快照集和建立資料庫快照集(Transact-SQL)。

資料庫選項

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

model 資料庫和建立新資料庫

模型資料庫中的所有使用者定義物件都會複製到所有新建立的資料庫中。 您可以將所有要併入新建立之資料庫中的任何物件 (如資料表、檢視表、預存程序、資料類型等) 加入至 model 資料庫。

當指定不含其他大小參數的 CREATE DATABASE <database_name> 陳述式時,會將主要資料檔案之大小設為與 model 資料庫中主要檔案的大小相同。

除非指定 FOR ATTACH,否則每個新資料庫都會從 model 資料庫繼承資料庫選項設定。 例如,在 model 資料庫及您建立的任何新資料庫中,auto shrink 資料庫選項會設定為 true。 如果您在 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 子句中只需要指定主要檔案。 從 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 以及 AdventureWorks2022 資料檔案和記錄檔。 在這個範例中,全文檢索目錄會從預設位置移至新的位置 c:\myFTCatalogs。 資料檔案和記錄檔仍保留在它們的預設位置中。

USE master;
GO
--Detach the AdventureWorks2022 database
sp_detach_db AdventureWorks2022;
GO
-- Physically move the full text catalog to the new location.
--Attach the AdventureWorks2022 database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks2022 ON
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_data.mdf'),
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_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 Server 搭配使用,建立單一資料庫或彈性集區中的資料庫。 使用此陳述式,您可以指定資料庫名稱、定序、大小上限、版本、服務目標,以及 (如果適用的話) 新資料庫的彈性集區。 它也可以用來在彈性集區中建立資料庫。 此外,它可以用來在其他 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>) } })
   ]
   [ WITH ( BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' } ) ]
[;]

引數

database_name

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

Collation_name

指定資料庫數據的預設定序。 指定 CATALOG_COLLATION 系統元數據,例如物件識別碼。

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

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

CATALOG_COLLATION

指定中繼資料目錄的預設定序。 自 CATALOG_COLLATION 變數只能在資料庫建立期間使用,而且無法在建立之後變更。

根據預設,系統物件名稱的元數據目錄會定序為 SQL_Latin1_General_CP1_CI_AS 定序。 如果未指定CATALOG_COLLATION,則這是 Azure SQL 資料庫 的預設設定。

DATABASE_DEFAULT指定用於系統檢視和系統數據表的元數據目錄,以符合資料庫的定序。 如果您要系統中繼資料中的物件識別元遵循與資料相同的定序,您應該建立資料庫 WITH CATALOG_COLLATION = DATABASE_DEFAULT

  • 您可能想要針對資料和物件識別碼使用不同的定序。 下列範例會針對數據列數據建立區分大小寫定序的資料庫,但會針對對象標識碼使用預設SQL_Latin1_General_CP1_CI_AS不區分大小寫的定序。

    CREATE DATABASE [different-collations] COLLATE SQL_Latin1_General_CP1_CS_AS
    
  • 如果您要資料與系統中繼資料使用相同的定序, 請指定 WITH CATALOG_COLLATION = DATABASE_DEFAULT。 下列範例會建立具有區分大小寫定序的資料庫,此定序將用於物件識別符。

    CREATE DATABASE [same-collations] COLLATE SQL_Latin1_General_CP1_CS_AS
    WITH CATALOG_COLLATION = DATABASE_DEFAULT
    

BACKUP_STORAGE_REDUNDANCY = {'LOCAL' |'ZONE' |'GEO'}

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

若要在使用 T-SQL 建立資料庫時強制執行數據落地,請使用 LOCALZONE 作為BACKUP_STORAGE_REDUNDANCY參數的輸入。

使用 建立資料庫做為另一個資料庫的 AS COPY OF複本時,支援指定選項,而且應該以括弧括住。 例如: WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');

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
1,024 GB N/A N/A √ (D)
從 1,024 GB 到 4,096 GB 的增量為 256 GB* N/A N/A N/A N/A

* P11 和 P15 允許 MAXSIZE 最多 4 TB,1,024 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 購買模型:S0S1S2S3S4S6S7S9S12P1P2P4P6P11P15
  • 如需最新的虛擬核心購買模型,請選擇階層,並從預設值清單中提供虛擬核心數目,其中虛擬核心數目為 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 (name = <elastic_pool_name>)

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

AS COPY OF [source_server_name.]source_database_name

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

使用 AS COPY OF 將資料庫複製到相同或不同的 SQL 資料庫 伺服器。

使用 建立資料庫做為另一個資料庫的 AS COPY OF複本時,支援指定選項,而且應該以括弧括住。 例如: WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');

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

注意

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

source_database_name

要複製的資料庫名稱。

備註

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

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

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

資料庫複本

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

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

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

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

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

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

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

重要

根據預設,會使用與源資料庫相同的備份儲存體備援來建立資料庫複本。

權限

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

  • 伺服器層級主體登入
  • Azure 中邏輯伺服器的 Microsoft Entra 系統管理員
  • dbmanager 資料庫角色成員的登入

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

範例

簡單範例

建立資料庫的簡單範例。

CREATE DATABASE TestDB1;

使用 Edition 的簡單範例

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

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 ) ) ;

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

下列範例會針對單一資料庫,在一般用途服務目標中建立名為 db_copy 的資料庫複本db_original。 不論 db_original 位於彈性集區或單一資料庫的計算大小 (服務目標) 中,皆是如此。

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

CREATE DATABASE db_copy
  AS COPY OF ozabzw7545.db_original ( EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8' );

下列範例會建立 db_original 資料庫的複本,在名為 ep1 的彈性集區中名為 db_copy。 不論 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;

變更選項時建立為資料庫複本

下列範例會為資料庫的新複本設定不同的選項,包括不同的服務層級和備份記憶體備援設定。 根據預設,系統會使用與源資料庫相同的設定來建立資料庫複本。

CREATE DATABASE copy_testdb
AS COPY OF [test_db]
  (EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8')
  WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');

* SQL 受控執行個體 *

 

Azure SQL 受控執行個體

概觀

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

語法

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

CREATE DATABASE database_name [ COLLATE collation_name ]
[ WITH <with_options> [,..n]]
[;]

<with_options> ::=
{
  LEDGER = { ON | OFF }
}

重要

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

引數

database_name

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

Collation_name

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

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

LEDGER = {ON |OFF }

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

備註

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

重要

CREATE DATABASE 陳述式必須是 Transact-SQL 批次中唯一的陳述式。

以下是 CREATE DATABASE 的限制:

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

  • WITH除了 之外, WITH LEDGER不支持選項。

    提示

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

權限

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

  • 伺服器層級主體登入
  • Azure 中邏輯伺服器的 Microsoft Entra 系統管理員
  • dbcreator 資料庫角色成員的登入

範例

簡單範例

建立資料庫的簡單範例。

CREATE DATABASE TestDB1;

設定總帳資料庫

CREATE DATABASE MyLedgerDB WITH LEDGER = ON;

* Azure Synapse
Analytics *

 

Azure Synapse Analytics

概觀

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

  • 使用 Gen2 服務等級的獨立專用 SQL 集區 (先前稱為 SQL DW) 支援 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 資料庫 和 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 限制。

EDITION

指定資料庫的服務層。 針對 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 Database 中相容性層級 130 的查詢效能

權限

必要權限:

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

錯誤處理

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

限制

您必須連線至 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

* Analytics Platform
System (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,大小就不會自動成長。 Analytics Platform System (PDW) 在嘗試進行需要 replicated_sizedistributed_sizelog_size 成長至超出其指定值的動作時,將會傳回錯誤。

只能針對所有大小將 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 的任何動作,將會向使用者傳回錯誤。

權限

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

下列範例會將建立資料庫的權限提供給資料庫使用者 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);