创建一个新数据库及该数据库的文件,或从先前创建的数据库的文件中附加数据库。
语法
CREATE DATABASE database_name
[ ON
[ < filespec > [ ,...n ] ]
[ , < filegroup > [ ,...n ] ]
]
[ LOG ON { < filespec > [ ,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]
< filespec > ::=
[ PRIMARY ]
( [ NAME = logical_file_name , ]
FILENAME = 'os_file_name'
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] ) [ ,...n ]
< filegroup > ::=
FILEGROUP filegroup_name < filespec > [ ,...n ]
参数
database_name
新数据库的名称。数据库名称在中必须唯一,并且符合标识符的规则。database_name 最多可以包含 128 个字符,除非没有为日志指定逻辑名。如果没有指定日志文件的逻辑名,则 Microsoft® SQL Server™ 会通过向 database_name 追加后缀来生成逻辑名。该操作要求 database_name 在 123 个字符之内,以便生成的日志文件逻辑名少于 128 个字符。
ON
指定显式定义用来数据库数据部分的磁盘文件(数据文件)。该关键字后跟以逗号分隔的
项列表, 项用以定义主文件组的数据文件。主文件组的文件列表后可跟以逗号分隔的 项列表(可选), 项用以定义用户文件组及其文件。
n
占位符,表示可以为新数据库指定多个文件。
LOG ON
指定显式定义用来存储数据库日志的磁盘文件(日志文件)。该关键字后跟以逗号分隔的 项列表, 项用以定义日志文件。如果没有指定 LOG ON,将自动创建一个日志文件,该文件使用系统生成的名称,大小为数据库中所有数据文件总大小的 25%。
FOR LOAD
支持该子句是为了与早期版本的 Microsoft SQL Server 兼容。数据库在打开 dbo use only 数据库选项的情况下创建,并且将其状态设置为正在装载。SQL Server 7.0 版中不需要该子句,因为 RESTORE 语句可以作为还原操作的一部分重新创建数据库。
FOR ATTACH
指定从现有的一组操作系统文件中附加数据库。必须有指定第一个主文件的 条目。至于其它 条目,只需要与第一次创建数据库或上一次附加数据库时路径不同的文件的那些条目。必须为这些文件指定 条目。附加的数据库必须使用与 SQL Server 相同的代码页和排序次序创建。应使用 sp_attach_db 系统存储过程,而不要直接使用 CREATE DATABASE FOR ATTACH。只有必须指定 16 个以上的 项目时,才需要使用 CREATE DATABASE FOR ATTACH。
如果将数据库附加到的不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。
collation_name
指定数据库的默认排序规则。排序规则名称既可以是 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。
有关 和 SQL 排序规则名称的更多信息,请参见 COLLATE。
PRIMARY
指定关联的 列表定义主文件。主文件组包含所有数据库系统表。还包含所有未指派给用户文件组的对象。主文件组的第一个 条目成为主文件,该文件包含数据库的逻辑起点及其系统表。一个数据库只能有一个主文件。如果没有指定 PRIMARY,那么 CREATE DATABASE 语句中列出的第一个文件将成为主文件。
NAME
为由 定义的文件指定逻辑名称。如果指定了 FOR ATTACH,则不需要指定 NAME 参数。
logical_file_name
用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称。logical_file_name 在数据库中必须唯一,并且符合标识符的规则。该名称可以是字符或 Unicode 常量,也可以是常规标识符或定界标识符。
FILENAME
为 定义的文件指定操作系统文件名。
'os_file_name'
操作系统创建 定义的物理文件时使用的路径名和文件名。os_file_name 中的路径必须指定 SQL Server 实例上的目录。os_file_name 不能指定压缩文件系统中的目录。
如果文件在原始分区上创建,则 os_file_name 必须只指定现有原始分区的驱动器字母。每个原始分区上只能创建一个文件。原始分区上的文件不会自动增长;因此,os_file_name 指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。
SIZE
指定 中定义的文件的大小。如果主文件的 中没有提供 SIZE 参数,那么 SQL Server 将使用 model 数据库中的主文件大小。如果次要文件或日志文件的 中没有指定 SIZE 参数,则 SQL Server 将使文件大小为 1 MB。
size
中定义的文件的初始大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。size 的最小值为 512 KB。如果没有指定 size,则默认值为 1 MB。为主文件指定的大小至少应与 model 数据库的主文件大小相同。
MAXSIZE
指定 中定义的文件可以增长到的最大大小。
max_size
中定义的文件可以增长到的最大大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件将增长到磁盘变满为止。
说明 在磁盘即将变满时,Microsoft Windows NT® S/B 系统日志会警告 SQL Server 系统管理员。
UNLIMITED
指定 中定义的文件将增长到磁盘变满为止。
FILEGROWTH
指定 中定义的文件的增长增量。文件的 FILEGROWTH 设置不能超过 MAXSIZE 设置。
growth_increment
每次需要新的空间时为文件添加的空间大小。指定一个整数,不要包含小数位。0 值表示不增长。该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果指定 %,则增量大小为发生增长时文件大小的指定百分比。如果没有指定 FILEGROWTH,则默认值为 10%,最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。
注释
使用一条 CREATE DATABASE 语句即可创建数据库以及存储该数据库的文件。SQL Server 分两步实现 CREATE DATABASE 语句:
SQL Server 使用 model 数据库的复本初始化数据库及其元数据。
然后,SQL Server 使用空页填充数据库的剩余部分,除了包含记录数据库中空间使用情况以外的内部数据页。
因此,model 数据库中任何用户定义对象均复制到所有新创建的数据库中。可以向 model 数据库中添加任何对象,例如表、视图、存储过程、数据类型等,以将这些对象添加到所有数据库中。
每个新数据库都从 model 数据库继承数据库选项设置(除非指定了 FOR ATTACH)。例如,在 model 和任何创建的新数据库中,数据库选项 select into/bulkcopy 都设置为 OFF。如果使用 ALTER DATABASE 更改 model 数据库的选项,则这些选项设置会在创建的新数据库中生效。如果在 CREATE DATABASE 语句中指定了 FOR ATTACH,则新数据库将继承原始数据库的数据库选项设置。
一台服务器上最多可以指定 32,767 个数据库。
有三种类型的文件用来存储数据库:
主文件包含数据库的启动信息。主文件还可以用来存储数据。每个数据库都包含一个主文件。
次要文件保存所有主要数据文件中容纳不下的数据。如果主文件大到足以容纳数据库中的所有数据,就不需要有次要数据文件。而另一些数据库可能非常大,需要多个次要数据文件,也可能使用多个独立磁盘驱动器上的次要文件,以将数据分布在多个磁盘上。
事务日志文件保存用来恢复数据库的日志信息。每个数据库必须至少有一个事务日志文件(尽管可以有多个)。事务日志文件最小为 512 KB。
每个数据库至少有两个文件,一个主文件和一个事务日志文件。
尽管 'os_file_name' 可以是任何有效的操作系统文件名,但如果使用以下建议的扩展名,则可以更加清楚地反映文件的用途。
[[The No.2 Picture.]]
说明 创建用户数据库后,应备份 master 数据库。
SIZE、MAXSIZE 和 FILEGROWTH 参数中不能指定分数。若要在 SIZE 参数中指定以兆字节为单位的分数,请将该数字乘以 1,024 转换成千字节。例如,指定 1,536 KB 而不要指定 1.5 MB(1.5 乘以 1,024 等于 1,536)。
如果仅指定 CREATE DATABASE database_name 语句而不带其它参数,那么数据库的大小将与 model 数据库的大小相等。
所有数据库都至少包含一个主文件组。所有系统表都分配在主文件组中。数据库还
【责编:admin】
--------------------next---------------------
阅读(429) | 评论(0) | 转发(0) |