Posted in 面试题 onSeptember 10, 2013
在SQL Server中创建数据库主要有两种方法,第一种是在SQL Server Management Studio中使用向导创建数据库;第二种是执行Transact-SQL语句创建数据库。下面我们分别进行介绍。
(1)使用SQL Server Management Studio创建数据库
在SQL Server Management Studio中,可以使用向导创建数据库,步骤如下:
1. 打开SQL Server Management Studio。
2. 右击“数据库”对象,在弹出式菜单中选择“新建数据库”菜单项,打开“新建数据库”对话框
3. 在“常规”页,可以定义数据库的名称为EAMS、数据库文件、数据库的所有者、排序规则、恢复模型,以及是否使用全文索引。
4. 在“选项”页,可以定义数据库的一些选项,包括自动选项、游标选项、混杂选项、恢复选项、行级版本选项和状态选项
5. 在“文件组”页,显示文件组和文件的统计信息,同时还可以设置是否采用默认值
6. 在“扩展属性”页,可以定义数据库的一些扩展属性,如图5所示。
7. 当完成各个选项的定义之后,单击【OK】按钮,SQL Server数据库引擎会创建所定义的数据库。
(2)使用Transact-SQL创建数据库
Transact-SQL提供了创建数据库的语句:CREATE DATABASE,其语法格式如下:
CREATE DATABASE database_name
[ ON
[ [ ,...n ] ]
[ , [ ,...n ] ]
]
[
[ LOG ON { [ ,...n ] } ]
[ COLLATE collation_name ]
[ FOR { ATTACH [ WITH ]
| ATTACH_REBUILD_LOG } ]
[ WITH ]
]
[;]
::=
[ PRIMARY ]
(
[ NAME = logical_file_name , ]
FILENAME = ‘os_file_name’
[ , SIZE = size [ KB | MB | GB | TB ] ]
[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
[ , FILEGROWTH = growth_increment [ KB | MB | % ] ]
) [ ,...n ]
::=
FILEGROUP filegroup_name
[ ,...n ]
::=
DB_CHAINING { ON | OFF }
| TRUSTWORTHY { ON | OFF }
::=
ENABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
Create a Database Snapshot
CREATE DATABASE database_snapshot_name
ON
(
NAME = logical_file_name,
FILENAME = ‘os_file_name’
) [ ,...n ]
AS SNAPSHOT OF source_database_name
[;]
参数说明如下:
l database_name,新数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。database_name 最多可以包含 128 个字符,除非没有为日志指定逻辑名。如果没有指定日志文件的逻辑名,则SQL Server会通过向 database_name 追加后缀来生成逻辑名。该操作要求 database_name 在 123 个字符之内,以便生成的日志文件逻辑名少于 128 个字符。
l ON,指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。该关键字后跟以逗号分隔的 项列表, 项用以定义主文件组的数据文件。主文件组的文件列表后可跟以逗号分隔的 项列表(可选), 项用以定义用户文件组及其文件。
l N,占位符,表示可以为新数据库指定多个文件。
l LOG ON,指定显式定义用来存储数据库日志的磁盘文件(日志文件)。该关键字后跟以逗号分隔的 项列表, 项用以定义日志文件。如果没有指定 LOG ON,将自动创建一个日志文件,该文件使用系统生成的名称,大小为数据库中所有数据文件总大小的 25%。
l FOR LOAD,支持该子句是为了与早期版本的 SQL Server 兼容。数据库在打开 dbo use only 数据库选项的情况下创建,并且将其状态设置为正在装载。
l FOR ATTACH,指定从现有的一组操作系统文件中附加数据库。必须有指定第一个主文件的 条目。至于其它 条目,只需要与第一次创建数据库或上一次附加数据库时路径不同的文件的那些条目。必须为这些文件指定 条目。附加的数据库必须使用与 SQL Server 相同的代码页和排序次序创建。应使用 sp_attach_db 系统存储过程,而不要直接使用 CREATE DATABASE FOR ATTACH。只有必须指定 16 个以上的 项目时,才需要使用 CREATE DATABASE FOR ATTACH。 如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。
l collation_name,指定数据库的默认排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。
l PRIMARY,指定关联的 列表定义主文件。主文件组包含所有数据库系统表。还包含所有未指派给用户文件组的对象。主文件组的第一个 条目成为主文件,该文件包含数据库的逻辑起点及其系统表。一个数据库只能有一个主文件。如果没有指定 PRIMARY,那么 CREATE DATABASE 语句中列出的第一个文件将成为主文件。
l NAME,为由 定义的文件指定逻辑名称。如果指定了 FOR ATTACH,则不需要指定 NAME 参数。
l logical_file_name,用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称。logical_file_name 在数据库中必须唯一,并且符合标识符的规则。该名称可以是字符或 Unicode 常量,也可以是常规标识符或定界标识符。
l FILENAME,为 定义的文件指定操作系统文件名。
l os_file_name,操作系统创建 定义的物理文件时使用的路径名和文件名。os_file_name 中的路径必须指定 SQL Server 实例上的目录。os_file_name 不能指定压缩文件系统中的目录。如果文件在原始分区上创建,则 os_file_name 必须只指定现有原始分区的驱动器字母。每个原始分区上只能创建一个文件。原始分区上的文件不会自动增长;因此,os_file_name 指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。
l SIZE,指定 中定义的文件的大小。如果主文件的 中没有提供 SIZE 参数,那么 SQL Server 将使用 model 数据库中的主文件大小。如果次要文件或日志文件的 中没有指定 SIZE 参数,则 SQL Server 将使文件大小为 1 MB。
l Size, 中定义的文件的初始大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。size 的最小值为 512 KB。如果没有指定 size,则默认值为 1 MB。为主文件指定的大小至少应与 model 数据库的主文件大小相同。
l MAXSIZE,指定 中定义的文件可以增长到的最大大小。
l max_size, 中定义的文件可以增长到的最大大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件将增长到磁盘变满为止。
l UNLIMITED,指定 中定义的文件将增长到磁盘变满为止。
l FILEGROWTH,指定 中定义的文件的增长增量。文件的 FILEGROWTH 设置不能超过 MAXSIZE 设置。
l growth_increment,每次需要新的空间时为文件添加的空间大小。指定一个整数,不要包含小数位。0 值表示不增长。该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果指定 %,则增量大小为发生增长时文件大小的指定百分比。如果没有指定 FILEGROWTH,则默认值为 10%,最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。
l,控制文件组的属性。文件组不能在数据库快照上定义。
l FILEGROUP,定义文件组的逻辑名。
l filegroup_name,表示在创建数据库之后,在Transact-SQL语句中引用文件组的名称。filegroup_name在数据库中必须唯一,不能是系统提供的名称,如PRIMARY和PRIMARY_LOG。名称必须同标识符的规则保持一致。
l default,定义文件组为特定文件组类型的默认数据库文件组。
l DB_CHAINING { ON | OFF },当设置为ON的时候,数据库可以为交叉数据库所有者关系链中的源或者目标。当设置为OFF的时候,数据库不能参与交叉数据库所有者关系链,对于用户数据库,可以修改这个选项,但是不能修改系统数据库的该选项。默认值为OFF。
l TRUSTWORTHY { ON | OFF },当设置为ON的时候,数据库模块(如视图、用户自定义函数或者存储过程)允许访问数据库外的资源。当设置为OFF的时候,数据库模块不能访问数据库之外的资源。默认值为OFF。
l ,当授予FOR ATTACH子句的时候,才能设置Service Broker选项。
l ENABLE_BROKER,定义数据库是否启用Service Broker。
l NEW_BROKER,在sys数据库中和恢复数据库中创建新的service_broker_guid。
l ERROR_BROKER_CONVERSATIONS,终止所有发生错误的会话。
l database_snapshot_name,定义新数据库的快照名。
l ON (NAME =logical_file_name, FILENAME =’os_file_name’) [ ,... n ] ,对于创建一个数据库快照,在源数据库中定义文件列表。
l AS SNAPSHOT OF source_database_name,定义创建的数据库为一个源数据库的数据库快照。
(1)使用SQL Server Management Studio创建数据库
在SQL Server Management Studio中,可以使用向导创建数据库,步骤如下:
1. 打开SQL Server Management Studio。
2. 右击“数据库”对象,在弹出式菜单中选择“新建数据库”菜单项,打开“新建数据库”对话框
3. 在“常规”页,可以定义数据库的名称为EAMS、数据库文件、数据库的所有者、排序规则、恢复模型,以及是否使用全文索引。
4. 在“选项”页,可以定义数据库的一些选项,包括自动选项、游标选项、混杂选项、恢复选项、行级版本选项和状态选项
5. 在“文件组”页,显示文件组和文件的统计信息,同时还可以设置是否采用默认值
6. 在“扩展属性”页,可以定义数据库的一些扩展属性,如图5所示。
7. 当完成各个选项的定义之后,单击【OK】按钮,SQL Server数据库引擎会创建所定义的数据库。
(2)使用Transact-SQL创建数据库
Transact-SQL提供了创建数据库的语句:CREATE DATABASE,其语法格式如下:
CREATE DATABASE database_name
[ ON
[
[ ,
]
[
[ LOG ON {
[ COLLATE collation_name ]
[ FOR { ATTACH [ WITH
| ATTACH_REBUILD_LOG } ]
[ WITH
]
[;]
[ PRIMARY ]
(
[ NAME = logical_file_name , ]
FILENAME = ‘os_file_name’
[ , SIZE = size [ KB | MB | GB | TB ] ]
[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
[ , FILEGROWTH = growth_increment [ KB | MB | % ] ]
) [ ,...n ]
FILEGROUP filegroup_name
DB_CHAINING { ON | OFF }
| TRUSTWORTHY { ON | OFF }
ENABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
Create a Database Snapshot
CREATE DATABASE database_snapshot_name
ON
(
NAME = logical_file_name,
FILENAME = ‘os_file_name’
) [ ,...n ]
AS SNAPSHOT OF source_database_name
[;]
参数说明如下:
l database_name,新数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。database_name 最多可以包含 128 个字符,除非没有为日志指定逻辑名。如果没有指定日志文件的逻辑名,则SQL Server会通过向 database_name 追加后缀来生成逻辑名。该操作要求 database_name 在 123 个字符之内,以便生成的日志文件逻辑名少于 128 个字符。
l ON,指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。该关键字后跟以逗号分隔的
l N,占位符,表示可以为新数据库指定多个文件。
l LOG ON,指定显式定义用来存储数据库日志的磁盘文件(日志文件)。该关键字后跟以逗号分隔的
l FOR LOAD,支持该子句是为了与早期版本的 SQL Server 兼容。数据库在打开 dbo use only 数据库选项的情况下创建,并且将其状态设置为正在装载。
l FOR ATTACH,指定从现有的一组操作系统文件中附加数据库。必须有指定第一个主文件的
l collation_name,指定数据库的默认排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。
l PRIMARY,指定关联的
l NAME,为由
l logical_file_name,用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称。logical_file_name 在数据库中必须唯一,并且符合标识符的规则。该名称可以是字符或 Unicode 常量,也可以是常规标识符或定界标识符。
l FILENAME,为
l os_file_name,操作系统创建
l SIZE,指定
l Size,
l MAXSIZE,指定
l max_size,
l UNLIMITED,指定
l FILEGROWTH,指定
l growth_increment,每次需要新的空间时为文件添加的空间大小。指定一个整数,不要包含小数位。0 值表示不增长。该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果指定 %,则增量大小为发生增长时文件大小的指定百分比。如果没有指定 FILEGROWTH,则默认值为 10%,最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。
l
l FILEGROUP,定义文件组的逻辑名。
l filegroup_name,表示在创建数据库之后,在Transact-SQL语句中引用文件组的名称。filegroup_name在数据库中必须唯一,不能是系统提供的名称,如PRIMARY和PRIMARY_LOG。名称必须同标识符的规则保持一致。
l default,定义文件组为特定文件组类型的默认数据库文件组。
l DB_CHAINING { ON | OFF },当设置为ON的时候,数据库可以为交叉数据库所有者关系链中的源或者目标。当设置为OFF的时候,数据库不能参与交叉数据库所有者关系链,对于用户数据库,可以修改这个选项,但是不能修改系统数据库的该选项。默认值为OFF。
l TRUSTWORTHY { ON | OFF },当设置为ON的时候,数据库模块(如视图、用户自定义函数或者存储过程)允许访问数据库外的资源。当设置为OFF的时候,数据库模块不能访问数据库之外的资源。默认值为OFF。
l
l ENABLE_BROKER,定义数据库是否启用Service Broker。
l NEW_BROKER,在sys数据库中和恢复数据库中创建新的service_broker_guid。
l ERROR_BROKER_CONVERSATIONS,终止所有发生错误的会话。
l database_snapshot_name,定义新数据库的快照名。
l ON (NAME =logical_file_name, FILENAME =’os_file_name’) [ ,... n ] ,对于创建一个数据库快照,在源数据库中定义文件列表。
l AS SNAPSHOT OF source_database_name,定义创建的数据库为一个源数据库的数据库快照。
在SQL Server中创建数据库主要有那种方式
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Tags in this post...
Reply on: @reply_date@
@reply_contents@