建立新資料庫。
選取下列其中一個索引標籤,以取得您正在使用之特定 SQL 版本的語法、引數、備註、許可權和範例。
選取產品
在以下資料列中,選取您感興趣的產品名稱,隨即只會顯示該產品的資訊。
* SQL 伺服器 *
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 = 'path-to-directory-on-a-DAX-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_name和os_file_name。 這會將 database_name 限制為 123 個字元,使所產生的邏輯檔案名稱不超過 128 個字元。
如果未指定資料檔名,SQL Server 會同時使用 database_name 作為 logical_file_name 和 os_file_name。 預設路徑是從登錄取得。 您可以使用 Management Studio 中的 [伺服器屬性 ([資料庫設定] 頁面)] 來變更預設路徑。 變更預設路徑需要重新啟動 SQL Server。
遏制 = { 無 |部分 }
適用於:SQL Server 2012 (11.x) 和更新版本
指定資料庫的內含項目狀態。
-
NONE= 非自主資料庫。 -
PARTIAL= 部分包含的資料庫。
開啟
指定必須明確定義用來儲存資料庫之資料區段 (資料檔案) 的磁碟檔案。
ON 當後面接著以逗號分隔的項目清單 <filespec> 時,定義主要檔案群組的資料檔案時,是必要的。 主檔組中的檔案清單後面可以跟一個可選的、以逗號分隔的專案 <filegroup> 清單,這些專案定義使用者檔案組及其檔。
主要
指定關聯的 <filespec> 清單定義主檔。 在 <filespec> 主檔組的條目中指定的第一個檔將成為主檔。 資料庫只能有一個主要檔案。 如需詳細資訊,請參閱 資料庫檔案和檔案群組。
如果未指定,則 PRIMARY 陳述式中 CREATE DATABASE 列出的第一個檔案會成為主要檔案。
登錄
指定必須明確定義用來儲存資料庫記錄 (記錄檔) 的磁碟檔案。
LOG ON 後跟一個以逗號分隔的 <filespec> 項清單,用於定義日誌檔。 如果未指定,則 LOG ON 會自動建立一個記錄檔,其大小為資料庫所有資料檔大小總和的 25%,或 512 KB,以較大者為準。 這個檔案會放置在預設的記錄檔位置中。 如需此位置的相關資訊,請參閱 檢視或變更資料和記錄檔的預設位置。
LOG ON 無法在資料庫快照集上指定。
分套 collation_name
指定資料庫的預設定序。 定序名稱可以是 Windows 定序名稱或 SQL 定序名稱。 若未指定,系統會將 SQL Server 執行個體的預設定序指派給資料庫。 無法在資料庫快照集上指定定序名稱。
無法使用 or FOR ATTACHFOR ATTACH_REBUILD_LOG 子句指定定序名稱。 有關如何更改附加資料庫的排序規則的資訊,請參閱 設置或更改資料庫排序規則。
如需 Windows 和 SQL 定序名稱的詳細資訊,請參閱 COLLATE。
注意
自主資料庫的定序方式不同於非自主資料庫。 如需詳細資訊,請參閱 自主資料庫定序。
WITH <選項>
<filestream_option>
NON_TRANSACTED_ACCESS = { 關閉 |READ_ONLY |已滿 }
適用於: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_LANGUAGE = <lcid> | <語言名稱> | <語言別名>
適用於:SQL Server 2012 (11.x) 和更新版本
如需此選項的完整說明,請參閱 伺服器組態:預設語言 。
NESTED_TRIGGERS = { 關閉 |在 }
適用於:SQL Server 2012 (11.x) 和更新版本
如需此選項的完整說明,請參閱 伺服器組態:巢狀觸發程式 。
TRANSFORM_NOISE_WORDS = { 關閉 |在 }
適用於:SQL Server 2012 (11.x) 和更新版本
請參閱 伺服器組態:轉換雜訊字 ,以取得此選項的完整說明。
TWO_DIGIT_YEAR_CUTOFF = { 2049 | <1753 和 9999 之間的任何年份> }
表示一年的四位數。 2049 是預設值。 如需此選項的完整說明,請參閱 伺服器配置:兩位數年份截止 。
DB_CHAINING { 關閉 |在 }
指定時 ON ,資料庫可以是跨資料庫擁有權鏈的來源或目標。
當 OFF時,資料庫無法參與跨資料庫擁有權鏈結。 預設值為 OFF。
重要
當跨資料庫擁有權鏈結伺服器選項為 0 ()OFF 時,SQL Server 的執行個體會辨識此設定。 當跨資料庫所有權鏈結為 1 ()ON 時,所有使用者資料庫都可以參與跨資料庫所有權鏈結,而不論此選項的值為何。 您可以使用 sp_configure 來設定這個選項。
若要設定此選項,需要 sysadmin 固定伺服器角色的成員資格。 無法在下列系統資料庫上設定此 DB_CHAINING 選項: master, model, tempdb。
值得信賴 { OFF |在 }
指定時 ON ,使用模擬環境定義的資料庫模組 (例如,檢視、使用者定義函式或預存程序) 可以存取資料庫外部的資源。
當 OFF模擬內容中的資料庫模組無法存取資料庫外部的資源時。 預設值為 OFF。
TRUSTWORTHY 設定為 OFF 每當連接資料庫時。
依預設,除資料庫之外 msdb 的所有系統資料庫都 TRUSTWORTHY 已設定為 OFF。 無法變更 和 model 資料庫的tempdb值。 建議您永遠不要將資料庫的TRUSTWORTHY選項設定ON為。master
PERSISTENT_LOG_BUFFER = 開啟 ( DIRECTORY_NAME = 'directory_name' )
適用於:SQL Server 2017 (14.x) 及更高版本
指定此選項時,會在位於存放裝置類別記憶體 (NVDIMM-N 非揮發性儲存體) 所支援磁碟裝置上的磁碟區,建立交易記錄緩衝區,也就是持續記錄緩衝區。 如需詳細資訊,請參閱 使用記憶體類別記憶體 和 將永續性記錄緩衝區新增至資料庫的事務認可延遲加速。
分類帳 = { 在 |關閉 }
當設定為 ON 時,其會建立總帳資料庫,並在其中保護所有使用者資料的完整性。 只有總帳資料表可以在總帳資料庫中建立。 預設值為 OFF。 建立資料庫後,就無法變更選項的 LEDGER 值。 如需詳細資訊,請參閱設定總帳資料庫。
建立資料庫 ...對於附加 [ 帶<>attach_database_option ]
指定資料庫是藉由附加一組現有的作業系統檔案所建立。 必須有一個 <filespec> 指定主檔的條目。 唯一需要的其他 <filespec> 條目是那些與首次創建或上次附加資料庫時具有不同路徑的任何檔的條目。 必須為這些檔指定一個 <filespec> 條目。
FOR ATTACH 要求:
- 所有資料檔案 (MDF 和 NDF) 都必須是可用的。
- 如果存在多個記錄檔,它們必須全部都是可用的。
如果讀取/寫入資料庫具有目前無法使用的單一記錄檔,而且如果資料庫在作業前 ATTACH 未關閉且沒有用戶或開啟交易, FOR ATTACH 則會自動重建記錄檔並更新主要檔案。 相反地,對於唯讀資料庫,無法重建記錄,因為無法更新主要檔案。 因此,當您連接具有無法使用日誌的唯讀資料庫時,您必須提供日誌檔或子句中的 FOR ATTACH 檔案。
注意
較新版本的 SQL Server 所建立的資料庫無法在舊版中附加。
在 SQL Server 中,屬於所附加資料庫之任何全文檢索檔案都會附加至資料庫。 若要指定全文檢索目錄的新路徑,請指定一個不含全文檢索作業系統檔案名稱的新位置。 如需詳細資訊,請參閱 範例。
附加包含 FILESTREAM 選項“Directory name”的資料庫時,會提示 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,請在子句WITH <service_broker_option>中使用FOR ATTACH:
控制 Service Broker 訊息傳遞和資料庫的 Service Broker 識別碼。 只有在使用子句時 FOR ATTACH ,才能指定 Service Broker 選項。
ENABLE_BROKER
指定啟用指定資料庫的 Service Broker。 換句話說,在 is_broker_enabled 目錄檢視中,訊息傳遞已啟動且 sys.databases 設為 True。 資料庫會保留現有的 Service Broker 識別碼。
NEW_BROKER
在 service_broker_guid 和還原的資料庫中建立新的 sys.databases 值。 使用清除以結束所有交談端點。 它會啟用 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,同時也檢查資料庫中的程式碼,例如預存程序或其他使用者定義程式碼。
注意
和 TRUSTWORTHY 選項在DB_CHAINING附加資料庫時沒有作用。
對於 ATTACH_REBUILD_LOG
指定資料庫是藉由附加一組現有的作業系統檔案所建立。 這個選項只適用於讀取/寫入資料庫。 必須有一個 <filespec> 指定主檔的條目。 如果遺漏一個或多個交易記錄檔,記錄檔就會重建。 ATTACH_REBUILD_LOG 會自動建立新的 1 MB 記錄檔。 這個檔案會放置在預設的記錄檔位置中。 如需此位置的相關資訊,請參閱 檢視或變更資料和記錄檔的預設位置。
注意
如果記錄檔是可用的,資料庫引擎就會使用這些檔案,而不會重建記錄檔。
FOR ATTACH_REBUILD_LOG 需要具備以下條件:
- 正常關閉資料庫。
- 所有資料檔案 (MDF 和 NDF) 都必須是可用的。
重要
這項作業會中斷記錄備份鏈結。 我們建議您在作完成後立即進行完整資料庫備份。 如需詳細資訊,請參閱 BACKUP。
通常,當您將具有大日誌的讀/寫資料庫複製到另一台伺服器時, FOR ATTACH_REBUILD_LOG 會使用該副本,在該伺服器中,該副本將主要用於或僅用於讀取作,因此需要的日誌空間比原始資料庫少。
FOR ATTACH_REBUILD_LOG 無法在資料庫快照集上指定。
如需連結和中斷連結資料庫的詳細資訊,請參閱資料庫中斷連結和連結 (SQL Server)。
<檔規格>
控制檔案屬性。
名稱 logical_file_name
指定檔案的邏輯名稱。
NAME 在指定時 FILENAME 是必需的,除非指定其中一個 FOR ATTACH 子句。
FILESTREAM檔案群組無法命名 PRIMARY。
logical_file_name
參考檔案時,SQL Server 中使用的邏輯名稱。 Logical_file_name 在資料庫中必須是唯一的,且必須符合識別碼的規則。 名稱可以是字元或 Unicode 常數,或是一般識別碼或分隔識別碼。
檔名 { 'os_file_name' |'filestream_path' }
指定作業系統 (實體) 檔案名稱。
os_file_name
作業系統在建立檔案時使用的路徑和檔案名稱。 該檔案必須位於下列其中一個裝置:從中安裝 SQL Server 的本機伺服器、存放區域網路 [SAN] 或 iSCSI 型網路。 在執行
CREATE DATABASE陳述式之前,指定的路徑必須存在。 如需詳細資訊,請參閱本文稍後的資料庫檔案和檔案群組。SIZEMAXSIZE、FILEGROWTH和參數 在為檔案指定 UNC 路徑時可以設定。如果檔案在原始磁碟分割中,os_file_name 只能指定現有原始磁碟分割的磁碟機代號。 每個原始分割區上只能建立一個資料檔案。
注意
SQL Server 2014 (12.x) 和更新版本不支援原始分割區。
資料檔案不應放在壓縮檔案系統上,除非檔案是唯讀次要檔案,或資料庫是唯讀的。 記錄檔永遠不應放在壓縮的檔案系統中。
filestream_path
針對 FILESTREAM 檔案群組,
FILENAME是指將儲存 FILESTREAM 資料的路徑。 到最後一個資料夾為止的路徑必須存在,而最後一個資料夾則不得存在。 例如,如果您指定路徑C:\MyFiles\MyFilestreamData,在執行C:\MyFiles之前必須存在,但ALTER DATABASEMyFilestreamData資料夾不得存在。檔案群組和檔案 (
<filespec>) 必須在相同的陳述式中建立。和
SIZEFILEGROWTH屬性不適用於 FILESTREAM 檔案群組。
SIZE 尺寸
指定檔案的大小。
SIZE 當 os_file_name 指定為 UNC 路徑時,無法指定。
SIZE 不適用於 FILESTREAM 檔案群組。
大小
檔案的初始大小。
當未為主要檔案提供 大小 時,資料庫引擎會使用資料庫中
model主要檔案的大小。model資料庫的預設大小是 8 MB (從 SQL Server 2016 (13.x) 開始) 或 1 MB (適用於舊版)。 當指定次要資料檔案或記錄檔 ,但未 指定檔案大小時,資料庫引擎會將檔案設為 8 MB (從 SQL Server 2016 (13.x) 開始) 或 1 MB (舊版)。 所指定的主要檔案大小至少必須跟model資料庫的主要檔案大小一樣大。您可以使用千位元組 (KB)、百萬位元組 (MB)、十億位元組 (GB) 或兆位元組 (TB) 後置詞。 預設值是 MB。 指定整數。 不要包含小數。 size 是整數值。 對於大於 2,147,483,647 的值,請使用較大的單位。
最大尺寸 max_size
指定檔案所能成長的大小上限。
MAXSIZE 當 os_file_name 指定為 UNC 路徑時,無法指定。
max_size
檔案大小上限。 可以使用 KB、MB、GB 及 TB 後置詞。 預設值是 MB。 指定整數。 不要包含小數。 如果未指定 max_size ,檔案會成長,直到磁碟已滿為止。 Max_size 是一個整數值。 如果是大於 2147483647 的值,請使用較大的單位。
無限
指定檔案會成長到磁碟已滿為止。 在 SQL Server 中,指定為無限成長的記錄檔,其大小上限是 2 TB,而資料檔案的大小上限則是 16 TB。
注意
針對 FILESTREAM 容器指定此選項時,沒有大小上限。 它會繼續成長,直到磁碟已滿。
檔案成長 growth_increment
指定檔案的自動成長遞增。
FILEGROWTH檔案的設定不能超過設定MAXSIZE。
FILEGROWTH 當 os_file_name 指定為 UNC 路徑時,無法指定。
FILEGROWTH 不適用於 FILESTREAM 檔案群組。
growth_increment
每次需要新空間時新增至檔案的空間量。
該值可以在 、 、
KBMB或GB百分比 ()TB中%指定。 如果指定的數字沒有KB、MB或%字尾,則預設值為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_name
檔案群組的邏輯名稱。
filegroup_name
filegroup_name 在資料庫中必須是唯一的,而且不能是系統提供的名稱
PRIMARY和PRIMARY_LOG。 名稱可以是字元或 Unicode 常數,或是一般識別碼或分隔識別碼。 名稱必須符合識別碼的規則。包含 FILESTREAM
指定檔案群組將 FILESTREAM 二進位大型物件 (BLOB) 儲存在檔案系統中。
預設
指定具名檔案群組是資料庫中的預設檔案群組。
包含MEMORY_OPTIMIZED_DATA
適用於:SQL Server 2014 (12.x) 和更新版本
指定檔案群組將記憶體最佳化的資料儲存在檔案系統中。 如需詳細資訊,請參閱 In-Memory OLTP 概觀和使用案例。 每個資料庫只允許一個
MEMORY_OPTIMIZED_DATA檔案群組。 如需可建立檔案群組來儲存記憶體最佳化資料的程式碼範例,請參閱建立記憶體最佳化資料表和原生編譯的預存程序。
database_snapshot_name
新資料庫快照的名稱。 資料庫快照集名稱在 SQL Server 執行個體內必須是唯一的,且必須符合識別碼的規則。 database_snapshot_name 最多可有 128 個字元。
ON ( 名稱 = logical_file_name, 檔案名稱 = 'os_file_name') [ ,... n ]
若要建立資料庫快照集,請在來源資料庫中指定檔案清單。 必須個別指定所有資料檔案,快照集才能運作。 不過,資料庫快照集不允許使用記錄檔。 資料庫快照集不支援 FILESTREAM 檔案群組。 如果子句中 CREATE DATABASE ON 包含 FILESTREAM 資料檔,則陳述式會失敗,並引發錯誤。
如需 and NAME 及其值的FILENAME說明,請參閱對等<filespec>值的說明。
注意
當您建立資料庫快照集時,不允許使用其他 <filespec> 選項和關鍵字 PRIMARY 。
作為source_database_name的快照
指定要建立的資料庫是 source_database_name 所指定來源資料庫的資料庫快照集。 該快照集和來源資料庫必須位於相同的執行個體上。
在 SQL Server 2017 (14.x) 和更早版本中,資料庫快照集的來源資料庫不能包含 MEMORY_OPTIMIZED_DATA 檔案群組。 SQL Server 2019 (15.x) 中新增了記憶體內部資料庫快照集的支援。
如需詳細資訊,請參閱資料庫快照集。
備註
每當建立、修改或卸除使用者資料庫時,都應該備份 master 資料庫。
陳述 CREATE DATABASE 式必須以自動認可模式 (預設交易管理模式) 執行,而且不允許在明確或隱含的交易中執行。
您可使用一個 CREATE DATABASE 陳述式來建立資料庫與儲存資料庫的檔案。 SQL Server 會 CREATE DATABASE 使用下列步驟來實作陳述式:
- SQL Server 會使用 model 資料庫的複本將資料庫及其中繼資料初始化。
- 將 Service Broker GUID 指派給資料庫。
- 之後,資料庫引擎就會在其餘的資料庫中填入空白頁面,但不包括含有記錄資料庫中空間使用方式之內部資料的頁面。
在 SQL Server 的一個執行個體上,最多可以指定 32,767 個資料庫。
每個資料庫都有一個可以在資料庫中執行特殊活動的擁有者。 該擁有者就是建立資料庫的使用者。 使用 ALTER AUTHORIZATION 可以變更資料庫擁有者。
有些資料庫功能需倚賴檔案系統中提供的功能,才能發揮資料庫的完整功能。 一些倚賴檔案系統功能集的功能範例包括:
DBCC CHECKDB- 檔流
- 使用 VSS 和檔案快照集來進行的線上備份
- 資料庫快照集建立
- 記憶體最佳化資料檔案群組
資料庫檔案和檔案群組
每個資料庫都至少會有兩個檔案 (一個「主要檔案」和一個「交易記錄檔」),以及至少一個檔案群組。 每個資料庫最多可以指定 32,767 個檔案和 32,767 個檔案群組。
當您建立資料庫時,請根據您預期之資料庫中的資料量上限,盡量使資料檔案有足夠的空間。
建議您利用存放區域網路 (SAN)、iSCSI 型網路或本機連接的磁碟來儲存 SQL Server 資料庫檔案,因為這個組態可使 SQL Server 效能和可靠性最佳化。
資料庫快照集
您可以使用 CREATE DATABASE 陳述式來建立「來源資料庫」的唯讀靜態檢視表,即「資料庫快照集」。 資料庫快照集在交易上與來源資料庫是一致的,因為它是在快照集建立時即存在。 來源資料庫可以有多個快照集。
注意
當您建立資料庫快照集時,陳述 CREATE DATABASE 式無法參考記錄檔、離線檔案、還原檔案和已失效的檔案。
如果建立資料庫快照集失敗,快照集會受到質疑且必須刪除。 如需詳細資訊,請參閱 DROP DATABASE。
每個快照都會持續存在,直到使用 DROP DATABASE刪除為止。
如需詳細資訊,請參閱 資料庫快照集 (SQL Server) 和 建立資料庫快照集。
資料庫選項
每當您建立資料庫時,系統就會自動設定數個資料庫選項。 如需這些選項的清單,請參閱 ALTER DATABASE SET 選項。
model 資料庫和建立新資料庫
模型資料庫中的所有使用者定義物件都會複製到所有新建立的資料庫中。 您可以將所有要併入新建立之資料庫中的任何物件 (如資料表、檢視表、預存程序、資料類型等) 加入至 model 資料庫。
當指定不含其他大小參數的 CREATE DATABASE <database_name> 陳述式時,會將主要資料檔案之大小設為與 model 資料庫中主要檔案的大小相同。
除非指定 FOR ATTACH,否則每個新資料庫都會從 model 資料庫繼承資料庫選項設定。 例如,在 資料庫及您建立的任何新資料庫中,auto shrink 資料庫選項會設定為 model。 如果您在 model 資料庫中變更選項,您建立的任何新資料庫也會使用這些新的選項設定。 變更資料庫中的 model 作業不會影響現有的資料庫。 如果在陳述式上 CREATE DATABASE 指定 FOR ATTACH ,則新資料庫會繼承原始資料庫的資料庫選項設定。
檢視資料庫資訊
您可以利用目錄檢視、系統函數和系統預存程序,以傳回資料庫、檔案和檔案群組的相關資訊。 如需詳細資訊,請參閱 系統視圖。
權限
需要 CREATE DATABASE、CREATE ANY DATABASE 或 ALTER 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) 會變成主要檔案。 因為檔案的SIZE參數中Sales_dat都未指定 MB 或 KB,所以它會使用 MB 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 = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);
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 = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Arch2,
FILENAME = 'D:\SalesData\archdat2.ndf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Arch3,
FILENAME = 'D:\SalesData\archdat3.ndf',
SIZE = 100 MB, MAXSIZE = 200,
FILEGROWTH = 20
)
LOG ON (
NAME = Archlog1,
FILENAME = 'D:\SalesData\archlog1.ldf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Archlog2,
FILENAME = 'D:\SalesData\archlog2.ldf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
);
GO
D. 建立含有檔案群組的資料庫
下列範例會建立含有下列檔案群組的資料庫 Sales:
- 含有檔案
Spri1_dat和Spri2_dat的主要檔案群組。FILEGROWTH這些檔案的增量會指定為15%。 - 名為
SalesGroup1的檔案群組,該檔案群組含有檔案SGrp1Fi1和SGrp1Fi2。 - 名為
SalesGroup2的檔案群組,該檔案群組含有檔案SGrp2Fi1和SGrp2Fi2。
此範例將資料和記錄檔放在不同的磁碟上,藉此改進效能。
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 = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);
GO
E. 附加資料庫
下列範例會先卸離在範例 D 中建立的資料庫 Archive,再利用 FOR ATTACH 子句附加該資料庫。
Archive 定義為具有多個資料檔案和記錄檔。 不過,由於檔案的位置自建立以來未變更,因此只需要在子句中 FOR ATTACH 指定主要檔案。 從 SQL Server 2005 (9.x) 開始,作為要附加的資料庫的一部分的任何全文檔都將與資料庫一起附加。
USE master;
GO
EXECUTE 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。 它指定定序名稱,並將 TRUSTYWORTHY 和 DB_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 以及 AdventureWorks2025 資料檔案和記錄檔。 在這個範例中,全文檢索目錄會從預設位置移至新的位置 c:\myFTCatalogs。 資料檔案和記錄檔仍保留在它們的預設位置中。
USE master;
GO
--Detach the AdventureWorks2022 database
EXECUTE 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
一. 建立可指定一個資料列檔案群組和兩個 FILESTREAM 檔案群組的資料庫
下列範例會建立 FileStreamDB 資料庫。 此資料庫是使用一個資料列檔案群組和兩個 FILESTREAM 檔案群組所建立。 每個檔案群組都包含一個檔案:
FileStreamDB_data包含資料列資料, 它包含一個檔案FileStreamDB_data.mdf(具有預設路徑)。FileStreamPhotos包含 FILESTREAM 資料。 其包含兩個 FILESTREAM 資料容器:一個是位於FSPhotos的C:\MyFSfolder\Photos,一個是位於FSPhotos2的D:\MyFSfolder\Photos。 它會標示為預設的 FILESTREAM 檔案群組。FileStreamResumes包含 FILESTREAM 資料。 其包含一個 FILESTREAM 資料容器FSResumes(位於C:\MyFSfolder\Resumes)。
USE master;
GO
-- Get the SQL Server data path.
DECLARE @data_path AS 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 = 10 MB,
MAXSIZE = 50 MB,
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 is 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 = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);');
GO
J. 建立包含多個檔案之 FILESTREAM 檔案群組的資料庫
下列範例會建立 BlobStore1 資料庫。 此資料庫是使用一個資料列檔案群組和一個 FILESTREAM 檔案群組 FS 所建立。 FILESTREAM 檔案群組包含兩個檔案:FS1 和 FS2。 然後,此範例會將第三個檔案 FS3 加入至 FILESTREAM 檔案群組,藉以改變資料庫。
USE master;
GO
CREATE DATABASE [BlobStore1] CONTAINMENT = NONE
ON PRIMARY(
NAME = N'BlobStore1',
FILENAME = N'C:\BlobStore\BlobStore1.mdf',
SIZE = 100 MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1 MB
),
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT
(NAME = N'FS1', FILENAME = N'C:\BlobStore\FS1', MAXSIZE = UNLIMITED),
(NAME = N'FS2', FILENAME = N'C:\BlobStore\FS2', MAXSIZE = 100 MB)
LOG ON (
NAME = N'BlobStore1_log',
FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',
SIZE = 100 MB,
MAXSIZE = 1 GB,
FILEGROWTH = 1 MB
);
GO
ALTER DATABASE [BlobStore1]
ADD FILE (
NAME = N'FS3',
FILENAME = N'C:\BlobStore\FS3',
MAXSIZE = 100 MB
) TO FILEGROUP [FS];
GO
相關內容
* SQL 資料庫 *
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_S_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_S_Gen5_n'
| 'HS_PRMS_n'
| 'HS_MOPRMS_n'
| { ELASTIC_POOL(name = <elastic_pool_name>) } } )
]
[ WITH ( BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' } ) ]
[ ; ]
引數
database_name
新資料庫的名稱。 此名稱在 SQL Server 上必須是唯一的,並且符合 SQL Server 的識別碼規則。 如需詳細資訊,請參閱 資料庫識別碼。
collation_name
指定資料庫數據的預設定序。 指定 CATALOG_COLLATION 系統元數據,例如物件識別碼。
定序名稱可以是 Windows 定序名稱或 SQL 定序名稱。 如果未指定,則會為資料庫指派預設對照,即 SQL_Latin1_General_CP1_CI_AS。
如需 Windows 和 SQL 定序名稱的相關資訊,請 COLLATE.
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 = {'本地' |“區域” |“地理” |“地理區域” }
為資料庫指定時間點還原與長期保留備份的複寫方式。 只有在使用備份記憶體備援建立 GEO 資料庫時,才能進行異地還原或從區域中斷復原的能力。 除非明確指定,否則以 T-SQL 建立的資料庫會使用異地備援備份儲存體。
用於 GEOZONE 地理區域冗餘存儲。 異地區域冗餘存儲 (GZRS) 為任何工作負載提供最高級別的保護,防止區域中斷和區域性中斷。
若要在使用 T-SQL 建立資料庫時強制執行資料落地,請使用 LOCAL 或 ZONE 作為參數的 BACKUP_STORAGE_REDUNDANCY 輸入。
使用 AS COPY OF將資料庫創建為另一個資料庫的副本時,支援指定選項,並且應將其括在括弧中。 例如: WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL'); 。
分類帳 = { 在 |關閉 }
當設定為 ON 時,其會建立總帳資料庫,並在其中保護所有使用者資料的完整性。 只有總帳資料表可以在總帳資料庫中建立。 預設值為 OFF。 建立資料庫後,就無法變更選項的 LEDGER 值。 如需詳細資訊,請參閱設定總帳資料庫。
最大尺寸
指定資料庫的大小上限。
MAXSIZE 必須對指定的 EDITION (服務層級) 有效。
以下是 MAXSIZE 服務層級支援的值和預設值 (D)。
注意
引 MAXSIZE 數不適用於超大規模資料庫服務層級中的單一資料庫。 單一超大規模資料庫會視需要成長,最多 128 TB。 SQL 資料庫服務會自動新增儲存體 - 您不需要設定大小上限。
SQL Database 伺服器上適用於單一和集區資料庫的 DTU 模型
MAXSIZE |
基本 | S0-S2 | S3-S12 | P1-P6 | P11-P15 1 |
|---|---|---|---|---|---|
| 100 MB | Yes | Yes | Yes | Yes | Yes |
| 500 MB | Yes | Yes | Yes | Yes | Yes |
| 1 GB | Yes | Yes | Yes | Yes | Yes |
| 2 GB | 是 (D) | Yes | Yes | Yes | Yes |
| 5 GB | N/A | Yes | Yes | Yes | Yes |
| 10 GB | N/A | Yes | Yes | Yes | Yes |
| 20 吉位元組 | N/A | Yes | Yes | Yes | Yes |
| 30 GB | N/A | Yes | Yes | Yes | Yes |
| 40 吉位元組 | N/A | Yes | Yes | Yes | Yes |
| 50 GB | N/A | Yes | Yes | Yes | Yes |
| 100 GB | N/A | Yes | Yes | Yes | Yes |
| 150 吉位元組 | N/A | Yes | Yes | Yes | Yes |
| 200 GB | N/A | Yes | Yes | Yes | Yes |
| 250 GB | N/A | 是 (D) | 是 (D) | Yes | Yes |
| 300 吉位元組 | N/A | N/A | Yes | Yes | Yes |
| 400 吉位元組 | N/A | N/A | Yes | Yes | Yes |
| 500 GB | N/A | N/A | Yes | 是 (D) | Yes |
| 750 GB | N/A | N/A | Yes | Yes | Yes |
| 1,024 吉位元組 | N/A | N/A | Yes | Yes | 是 (D) |
| 從 1,024 GB 到 4,096 GB,增量為 256 GB | N/A | N/A | N/A | N/A | Yes |
1 P11 和 P15 允許 MAXSIZE 高達 4 TB,預設大小為 1,024 GB。 P11 和 P15 最多可使用 4 TB 的隨附儲存體,且不另收費。 在進階層中, MAXSIZE 下列區域目前提供大於 1 TB 的容量:美國東部 2、美國西部、美國政府維吉尼亞州、西歐、德國中部、東南亞、日本東部、澳洲東部、加拿大中部和加拿大東部。 如需 DTU 模型資源限制的詳細資訊,請參閱 使用 DTU 購買模型的單一資料庫資源限制 - Azure SQL 資料庫。
MAXSIZE如果指定,DTU 模型的值必須是上表中顯示的有效值,適用於指定的服務層級。
如需虛擬核心購買模型中的資料大小上限和 tempdb 大小等限制,請參閱單一資料庫的資源限制或彈性集區的資源限制文章。
當使用 vCore 模型時,如果未設定 MAXSIZE 值,預設值為 32 GB。 如需虛擬核心模型資源限制的詳細資訊,請參閱 虛擬核心資源限制。
版
指定資料庫的服務層。
單一資料庫與集區資料庫。 可用的值為:'Basic'、'Standard'、'Premium'、'GeneralPurpose'、'BusinessCritical' 和 'Hyperscale'。
下列規則適用於 MAXSIZE 和 EDITION 引數:
如果指定但
EDITION未指定,則MAXSIZE會使用版本的預設值。 例如,如果 設定EDITION為 標準,且未指定 ,MAXSIZE則 MAX'SIZE 會自動設定為 250 MB。如果未指定 nor
MAXSIZE,則EDITION會EDITION設定為 'GeneralPurpose',並MAXSIZE設定為 32 GB。
SERVICE_OBJECTIVE
指定計算大小和服務目標。
適用於 DTU 購買模型:
S0、S1、S2、S3、S4、S6、S7、S9、S12、P1、P2、P4、P6、P11、P15如需最新的虛擬核心購買模型,請選擇階層,並從預設值清單中提供虛擬核心數目,其中虛擬核心數目為
n。 請參閱單一資料庫的資源限制或彈性集區的資源限制。- 例如:
-
GP_Gen5_8用於一般用途、布建的計算、標準系列 (Gen5)、8 個虛擬核心。 -
GP_S_Gen5_8用於一般用途、無伺服器計算、標準系列 (Gen5)、8 個虛擬核心。 -
HS_Gen5_8超大規模資料庫、布建的計算、標準系列 (Gen5)、8 個虛擬核心。 - 適用於超大規模、無伺服器計算、標準系列(Gen5)、8 個虛擬核心的
HS_S_Gen5_8。
-
- 例如:
如需服務目標描述和大小、版本及服務目標組合的詳細資訊,請參閱 Azure SQL Database 服務層。 如果 不SERVICE_OBJECTIVE支援指定的 EDITION ,您會收到錯誤。 若要將 SERVICE_OBJECTIVE 值從一個層級變更為另一個層級 (例如,從 S1 變更為 P1),您也必須變更值 EDITION 。 目前已移除對 PRS 服務目標的支援。
ELASTIC_POOL (name = <elastic_pool_name>)
適用範圍: 僅單一和集區資料庫。 不適用於超大規模資料庫服務層級中的資料庫。
若要在彈性資料庫集區中建立新的資料庫,請將資料庫的 設定 SERVICE_OBJECTIVE 為 ELASTIC_POOL ,並提供集區的名稱。 如需詳細資訊,請參閱彈性集區可協助您管理及調整 Azure SQL 資料庫中的多個資料庫。
作為 [ source_server_name 的副本。 ] source_database_name
適用範圍: 僅單一和集區資料庫。
使用 AS COPY OF 將資料庫複製到相同或不同的 SQL 資料庫 伺服器。
使用 建立資料庫做為另一個資料庫的 AS COPY OF複本時,支援指定選項,而且應該以括弧括住。 例如: WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL'); 。
source_server_name
來源資料庫所在的 SQL 資料庫伺服器名稱。 當來源資料庫和目的地資料庫位於相同的 SQL Database 伺服器上時,這個參數是選擇性的。
注意
引
AS COPY OF數不支援完整的唯一網域名稱。 換句話說,如果您伺服器的完整網域名稱為serverName.database.windows.net,則在資料庫複製期間僅可使用serverName。source_database_name
要複製的資料庫名稱。
備註
Azure SQL Database 中的資料庫有數個預設設定,這些設定是在建立資料庫時所設定。 如需這些預設設定的詳細資訊,請參閱 DATABASEPROPERTYEX 中的值清單。
MAXSIZE 提供限制資料庫大小的功能。 如果資料庫的大小達到其 MAXSIZE,您將收到錯誤碼 40544。 發生這種情況時,您無法插入或更新資料,或建立新物件 (例如資料表、預存程序、檢視和函式)。 不過,您仍然可以讀取和刪除資料、截斷資料表、卸除資料表和索引,以及重建索引。 然後您可以將 MAXSIZE 升級為大於目前資料庫大小的值,或是刪除某些資料以釋出儲存空間。 在插入新數據之前,可能會有長達 15 分鐘的延遲。
若之後要變更大小、版本或服務目標值,請使用 ALTER DATABASE (Azure SQL Database)。
資料庫複本
適用範圍: 僅單一和集區資料庫。
使用 CREATE DATABASE 陳述式複製資料庫是一項非同步作業。 因此,在複製程式的完整持續時間內,不需要連線到 SQL 資料庫伺服器。
CREATE DATABASE 陳述式會在 sys.databases 中的項目建立後,但在資料庫複製作業完成前,將控制權交還給使用者。 換句話說,CREATE DATABASE 陳述式會在資料庫複製仍進行時成功傳回。
- 監控 SQL 資料庫伺服器上的複製過程:查詢
percentage_completereplication_state_desc中的 or 列或檢視中的statesys.databases列。 sys.dm_operation_status 檢視也可使用,因為其會傳回資料庫作業 (包括資料庫複製) 的狀態。
複製過程成功完成後,目標資料庫在事務上與源資料庫一致。
下列語法和語意規則適用於使用 AS COPY OF 引數的情況:
- 來源伺服器名稱和複製目標的伺服器名稱可以相同,也可以不同。 兩個名稱相同時,則這是是選擇性參數,而且根據預設會使用目前工作階段的伺服器內容。
- 來源和目的地資料庫名稱必須加以指定、是唯一的,並且符合 SQL Server 的識別碼規則。 如需詳細資訊,請參閱 資料庫識別碼。
-
CREATE DATABASE陳述式必須在將要建立新資料庫的 SQL Server 伺服器master資料庫內容中執行。 - 複製完成後,目的地資料庫必須做為獨立資料庫管理。 您可以在與來源資料庫不相關的情況下,單獨對新資料庫執行
ALTER DATABASE和DROP DATABASE陳述式。 您也可以將新資料庫複製到另一個新資料庫。 - 資料庫複製正在進行時,可能會繼續存取來源資料庫。
如需更多資訊,請參閱 如何在 Azure SQL Database 中複製具交易一致性的資料庫副本。
重要
根據預設,會使用與源資料庫相同的備份儲存體備援來建立資料庫複本。
權限
若要建立資料庫,登入必須是下列其中一個主體:
使用 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));
在另一個邏輯伺服器上建立資料庫複本
下列範例會針對單一資料庫,在一般用途服務目標中建立名為 db_original 的資料庫複本db_copy。 不論 db_original 位於彈性集區或單一資料庫的計算大小 (服務目標) 中,皆是如此。
適用範圍: 僅單一和集區資料庫。
CREATE DATABASE db_copy
AS COPY OF <database>.db_original
(EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8');
下列範例會建立 db_original 資料庫的複本,在名為 db_copy 的彈性集區中名為 ep1。 不論 db_original 位於彈性集區或單一資料庫的計算大小 (服務目標) 中,皆是如此。 如果 db_original 在彈性集區中,但使用不同的名稱,則 db_copy 仍會建立在 ep1 中。
適用範圍: 僅單一和集區資料庫。
CREATE DATABASE db_copy
AS COPY OF <database>.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 陳述式。
針對 SQL 受控執行個體,初始 MAXSIZE 值會隱含地設定為目前的磁碟大小,而且當您從 Azure 入口網站擴充磁碟大小時,它不會自動變更。 擴充磁碟後,也應該使用MAXSIZE進行擴充,以避免資料庫檔案已滿錯誤。
引數
database_name
新資料庫的名稱。 此名稱在 SQL Server 上必須是唯一的,並且符合 SQL Server 的識別碼規則。 如需詳細資訊,請參閱 資料庫識別碼。
collation_name
指定資料庫的預設定序。 定序名稱可以是 Windows 定序名稱或 SQL 定序名稱。 如果未指定,則會為資料庫指派預設對照,即 SQL_Latin1_General_CP1_CI_AS。
如需 Windows 和 SQL 定序名稱的相關資訊,請 COLLATE.
分類帳 = { 在 |關閉 }
當設定為 ON 時,其會建立總帳資料庫,並在其中保護所有使用者資料的完整性。 只有總帳資料表可以在總帳資料庫中建立。 預設值為 OFF。 建立資料庫後,就無法變更選項的 LEDGER 值。 如需詳細資訊,請參閱設定總帳資料庫。
備註
Azure SQL Database 中的資料庫有數個預設設定,這些設定是在建立資料庫時所設定。 如需這些預設設定的詳細資訊,請參閱 DATABASEPROPERTYEX 中的值清單。
重要
CREATE DATABASE 陳述式必須是 Transact-SQL 批次中唯一的陳述式。
以下是 CREATE DATABASE 的限制:
無法定義檔案和檔案群組。
WITH不支援選項,但WITH LEDGER.提示
因應措施為使用 ALTER DATABASE。 在
CREATE DATABASE之後,以設定資料庫選項和新增檔案。
權限
要創建資料庫,登錄名必須是以下類型的安全主體之一:
範例
基本範例
建立資料庫的基本範例。
CREATE DATABASE TestDB1;
設定總帳資料庫
CREATE DATABASE MyLedgerDB
WITH LEDGER = ON;
相關內容
* Azure Synapse
分析學*
Azure Synapse Analytics
概觀
在 Azure Synapse 中,此陳述式可與 Azure SQL Database 伺服器搭配使用,以建立專用 SQL 集區。 使用此陳述式,您可以指定資料庫名稱、定序、大小上限、版本及服務目標。
-
CREATE DATABASE支援使用 Gen2 服務層級的獨立專用 SQL 集區 (先前稱為 SQL DW)。 -
CREATE DATABASE不支援 Azure Synapse Analytics 工作區中的專用 SQL 集區。 請改為使用 Azure 入口網站。 -
CREATE DATABASE支援 Azure Synapse Analytics 中的無伺服器 SQL 集區。
語法
如需語法慣例的詳細資訊,請參閱 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。
最大尺寸
預設為 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 且無法變更。 如需詳細資訊,請參閱 ALTER DATABASE 相容性層級。
權限
必要權限:
- 由佈建程序建立的伺服器層級主體登入,或
- dbmanager 資料庫角色的成員。
錯誤處理
如果資料庫的大小達到 MAXSIZE,SQL Server 會引發錯誤碼 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;
相關內容
* 分析平臺
系統 (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) 產品文件中的「物件命名規則」和「保留資料庫名稱」。
自動成長 = { 開啟 |關閉 }
指定 replicated_size、 distributed_size 和 log_size 參數是否根據需要自動增長到超過其指定大小。 預設值為 OFF。
如果是 AUTOGROW,則ONreplicated_size、distributed_size及log_size根據需要每一個資料插入、更新或其他動作來成長,這些動作需要比已配置的儲存體更多的儲存體。
如果是 AUTOGROW,則OFF大小不會自動成長。 Analytics Platform System (PDW) 會在嘗試需要 replicated_size、 distributed_size 或 log_size 成長超過其指定值的動作時傳回錯誤。
AUTOGROW要麼適用於所有尺寸,要ON麼OFF適用於所有尺寸。 例如,無法設定AUTOGROW ON為log_size,但無法設定為replicated_size。
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 - 分析平臺系統 (PDW) 陳述式,將記錄檔的大小縮減為其原始大小。
如果是 AUTOGROW,則OFF會針對任何會將個別計算節點上的日誌大小增加到 1 log_size以外的動作傳回錯誤給使用者。
權限
需要 CREATE ANY DATABASE 資料庫中的 master 權限,或系統管理員 (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 陳述式。 如需詳細資訊,請參閱 Transact-SQL 陳述式。
如需資料庫上最小和最大條件約束,請參閱 Analytics Platform System (PDW) 產品文件中的「最小和最大值」。
建立資料庫時,「每個計算節點上」都必須有足夠的可用空間,以配置下列大小的總和:
- SQL Server 資料庫的資料表大小為 replicated_table_size。
- SQL Server 資料庫的資料表大小為 (distributed_table_size / 計算節點數目)。
- SQL Server 會記錄 (log_size / 計算節點數目) 的大小。
鎖定
對 DATABASE 物件採取共用鎖定。
中繼資料
此作業成功之後,此資料庫的專案會出現在 sys.databases 和 sys.objects 中繼資料檢視中。
範例:Analytics Platform System (PDW)
A。 基本資料庫建立範例
以下範例會建立資料庫 mytest,其儲存區配置為每一計算節點具備 100 GB 以用於複寫資料表、每一設備 500 GB 以用於分散式資料表,以及每一設備 100 GB 以用於交易記錄。 在此示例中, AUTOGROW 預設為 off。
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 大小的資料庫
下列範例會建立資料庫 mytest, AUTOGROW 並關閉複寫資料表的儲存體配置為每個運算節點 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);