CREATE DATABASE (Azure SQL Database)

创建新数据库。 您必须连接到 master 数据库才能创建新的数据库。

适用范围:Azure SQL Database. 有关与 SQL Server 相关的语法,请参阅 CREATE DATABASE (SQL Server Transact-SQL)

语法

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

<edition_options> ::= 
{
      MAXSIZE = { 100 MB | 500 MB | 1 | 5 | 10 | 20 | 30 … 150…500 } GB  
    | EDITION = { 'web' | 'business' | 'basic' | 'standard' | 'premium' } 
    | SERVICE_OBJECTIVE = { 'shared' | 'basic' | 'S0' | 'S1' | 'S2' | 'P1' | 'P2' | 'P3' } 
}
[;]

To copy a database:
CREATE DATABASE destination_database_name
     AS COPY OF [source_server_name.] source_database_name
[;]

参数

此语法关系图说明了 Azure SQL Database 中支持的参数。

  • database_name
    新数据库的名称。 此名称在 SQL Database 服务器上必须唯一,并且必须符合 SQL Server 的标识符规则。 有关详细信息,请参阅标识符

  • Collation_name
    指定数据库的默认排序规则。 排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。 如果未指定,则会为数据库分配默认排序规则(也即 SQL_Latin1_General_CP1_CI_AS)。

    有关 Windows 和 SQL 排序规则名称的详细信息,请参阅 COLLATE (Transact-SQL)

  • EDITION
    指定数据库的服务层。 可用值有:“web”、“business”、“basic”、“standard”和“premium”。

    在指定了 EDITION 但未指定 MAXSIZE 时,MAXSIZE 将设置为版本支持的限制性最高的大小。

  • MAXSIZE
    指定数据库的最大大小。 MAXSIZE 必须对指定 EDITION(服务层)有效。下面是服务层支持的 MAXSIZE 值和默认值 (D)。

    MAXSIZE

    Web

    Business

    Basic

    Standard

    Premium

    100 MB

    500 MB

    1 GB

    √ (D)

    2 GB

    √ (D)

    5 GB

    10 GB

    √ (D)

    20 GB

    30 GB

    40 GB

    50 GB

    100 GB

    150 GB

    200 GB

    250 GB

    √ (D)

    300 GB

    400 GB

    500 GB

    √ (D)

    以下规则适用于 MAXSIZE 和 EDITION 参数:

    • MAXSIZE 值(如果指定)必须是上表中显示的有效值。

    • 如果 MAXSIZE 设置为小于 5 GB,并且未指定 EDITION,则数据库版本将自动设置为 Web。

    • 如果 MAXSIZE 设置为大于 5 GB,并且未指定 EDITION,则数据库版本将自动设置为 Business。

    • 如果指定了 EDITION,但未指定 MAXSIZE,则使用版本的默认值。 例如,如果 EDITION 设置为 Standard 并且未指定 MAXSIZE,则 MAXSIZE 将自动设置为 500 MB。

    • 如果 MAXSIZE 和 EDITION 均未指定,则 EDITION 设置为 Web,MAXSIZE 设置为 1 GB。

  • SERVICE_OBJECTIVE
    指定性能级别。 有关服务目标说明以及大小、版本和服务目标组合的详细信息,请参阅 Azure SQL 数据库服务层和性能级别。 如果 EDITION 不支持指定的 SERVICE_OBJECTIVE,你会收到一个错误。

  • destination_database_name
    数据库复制创建的数据库的名称。 此名称在(目标)SQL Database 服务器上必须唯一,并且必须符合 SQL Server 的标识符规则。 有关详细信息,请参阅标识符

  • AS COPY OF [source_server_name.]source_database_name
    将数据库复制到同一台或其他 SQL Database 服务器上。

    备注

    AS COPY OF 不能与任何其他 CREATE DATABASE 参数一起使用。

    • source_server_name
      源数据库所在的 SQL Database 服务器的名称。 当源数据库和目标数据库位于同一台 SQL Database 服务器上时,此参数是可选的。

      注意:AS COPY OF 参数不支持完全限定的唯一域名。 换言之,如果您的服务器的完全限定域名是 serverName.database.windows.net,则在数据库复制期间仅使用 serverName。

    • source_database_name
      要复制的数据库的名称。

当使用 CREATE DATABASE 语句时,Azure SQL Database 不支持以下参数和选项:

  • 与参数的实际位置相关的参数,如 <filespec> 和 <filegroup>

  • 外部访问选项,如 DB_CHAINING 和 TRUSTWORTHY

  • 附加数据库

  • Service Broker 选项,如 ENABLE_BROKER、NEW_BROKER 和 ERROR_BROKER_CONVERSATIONS

  • 数据库快照

有关参数和 CREATE DATABASE 语句的详细信息,请参阅 CREATE DATABASE (SQL Server Transact-SQL)

注释

Azure SQL Database 中的数据库具有多个在创建数据库时设置的默认设置。 有关这些默认设置的详细信息,请参阅 DATABASEPROPERTYEX (Transact-SQL) 中的值列表。

MAXSIZE 提供限制数据库大小的功能。 如果数据库的大小达到其 MAXSIZE,您将收到错误代码 40544。 如果发生这种情况,您不能插入或更新数据或创建新的对象(如表、存储过程、视图和函数)。 不过,您仍可以读取和删除数据、截断表、删除表和索引以及重新建立索引。 然后,您可以将 MAXSIZE 更新为比当前数据库大小更大的值,或者删除一些数据以释放存储空间。 在您可以插入新数据之前,可能有长达十五分钟的延迟。

重要说明重要提示

CREATE DATABASE 语句必须是 Transact-SQL 批处理中的唯一语句。当执行 CREATE DATABASE 语句时,您必须连接到 master 数据库。

若要在以后更改大小、版本或服务目标值,请使用 ALTER DATABASE (Transact-SQL)

数据库副本

使用 CREATE DATABASE 语句复制数据库是一个异步操作。 因此,在整个复制过程中,不需要与 SQL Database 服务器建立连接。 CREATE DATABASE 语句会在 sys.databases 中的条目创建之后,但是在数据库复制操作完成之前将控制权返还给用户。 换言之,当数据库复制仍在进行时,CREATE DATABASE 语句会成功返回。 您可以使用 sys.dm_database_copies 和 sys.databases 视图监视复制过程。 可以使用 sys.dm_operations_status 视图,它还会返回数据库操作(包括数据库复制)的状态。 在复制过程成功完成后,目标数据库与源数据库在事务上是一致的。 有关在 SQL Database 中复制数据库的详细信息,请参阅在 Azure SQL Database 中复制数据库

备注

当数据库复制到新数据库时,新数据库会使用与源数据库相同的服务层和性能级别进行创建。例如,具有 P1 性能级别的 Premium 数据库的副本会创建为具有 P1 性能级别的新 Premium 数据库。

以下语法和语义规则应用于您对 AS COPY OF 参数的使用:

  • 源服务器名称与复制目标的服务器名称可能相同,也可能不同。 如果相同,此参数是可选的,默认情况下将使用当前会话的服务器上下文。

  • 必须指定源数据库名称和目标数据库名称,并且这些名称必须唯一且符合 SQL Server 标识符规则。 有关详细信息,请参阅标识符

  • 必须在将创建新数据库的 SQL Database 服务器的 master 数据库的上下文中执行 CREATE DATABASE 语句。

  • 在复制完成之后,必须将目标数据库作为独立的数据库进行管理。 您可以独立于源数据库,针对新数据库执行 ALTER DATABASE 和 DROP DATABASE 语句。 您还可以将新数据库复制到另一个新数据库。

  • 在复制过程完成之前,无法访问目标数据库。 您可以通过在 SQL Database 目标服务器上查询 sys.dm_operations_status、sys.databases 视图中的 state 列或 sys.dm_database_copies 视图中的 percentage_complete 列,检查复制过程的状态。

    在复制过程中,sys.databases 视图中的 state 列显示 SQL Database 目标服务器上的状态 Copying。 此外,sys.dm_database_copies 的 percentange_complete 列显示目标服务器上已复制的字节的百分比。

  • 当正在进行数据库复制时,可以继续访问源数据库。

权限

只有服务器级主体登录名(由设置过程创建)或 dbmanager 数据库角色的成员可以创建数据库。 源服务器和目标逻辑服务器必须属于相同 Azure 订阅。