根据https://docs.microsoft.com/en-us/sql/t-sql/statements/create-database-transact-sql?view=sql-server-2017处的文档,似乎可以编写一个单一的T-SQL CREATE DATABASE
命令,该命令同时包含> 0个文件规范和其他,例如COLLATE
,CONTAINMENT
指令。
都是可能的/可接受的/成功的,例如
CREATE DATABASE test01 ON PRIMARY (NAME=file1, FILENAME='/var/opts/mssql/data/file1.mdf', SIZE=100MB)
...和...
CREATE DATABASE test01 CONTAINMENT=NONE COLLATE French_CI_AI
...都是可以接受的。
但是,这都不是...
CREATE DATABASE test01 CONTAINMENT=NONE COLLATE French_CI_AI ON PRIMARY (NAME=file1, FILENAME='/var/opts/mssql/data/file1.mdf', SIZE=100MB)
...也不是...
CREATE DATABASE test01 ON PRIMARY (NAME=file1, FILENAME='/var/opts/mssql/data/file1.mdf', SIZE=100MB) CONTAINMENT=NONE COLLATE French_CI_AI
...看似有效的T-SQL(两者均被MSSQL服务器拒绝为语法错误)。
如文档所暗示的,有没有一种语法方法可以将所有这些组合成一个T-SQL CREATE DATABASE
命令?还是我误读了该引用文档的SYNTAX部分,并且不支持单个命令?
答案 0 :(得分:0)
您问题中doc链接的以下摘录显示了row_list = [0, 0, 0, 1, 1, 2, 2, 2, 2]
col_list = ['col1', 'col2', 'col3', 'col1', 'col4', 'col2', 'col3', 'col5', 'col6']
values_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
语句中子句的必需顺序:
CREATE DATABASE
要遵循此语法,请在数据库名称后立即指定containment选项,并在文件组/文件后添加归类规范:
CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON
[ PRIMARY ] <filespec> [ ,...n ]
[ , <filegroup> [ ,...n ] ]
[ LOG ON <filespec> [ ,...n ] ]
]
[ COLLATE collation_name ]
[ WITH <option> [,...n ] ]
[;]