从物理结构上讲,每个数据库都包含有数据文件和日志文件。开始使用数据库前,必须先创建数据库,以便生成这些文件。在SQL Server 2005中创建数据库的方法很多,其中最主要的方法是:
l 直观地利用SQL Server Management Studio创建数据库。
l 通过Transact-SQL代码创建数据库。
注意
新建的数据库实际上是根据Model数据库中保存的数据库模板创建的,也就是说它是Model数据库的一个副本。
下面将分别介绍这两种创建数据库的方法。
6.3.1 利用SQL Server Management Studio创建数据库
在SQL Server Management Studio中,用户可以非常方便地利用图形化的方法创建数据库。接下来,我们将利用这种方法创建一个示例数据库——Customers数据库。
(1) 选择【开始】|【程序】| Microsoft SQL Server 2005 | SQL Server Management Studio命令,打开SQL Server Management Studio。
(2) 使用【Windows身份验证】连接到SQL Server 2005数据库实例。
(3) 展开SQL Server实例,右击【数据库】,然后从弹出的快捷菜单中选择【新建数据库】命令,打开【新建数据库】对话框,如图6.2所示。
(4) 在【新建数据库】对话框中,输入数据库名称Customers。
图6.2 新建数据库
提示
数据库的名称必须遵循SQL Server 2005命名规则。名字的长度在1~128个字符之间;名称的第一个字符必须是字母或者“_”、“@”和“#”中的任意字符;名称中不能包含空格和SQL Server 2005的保留字(如master)。
(5) 如果接受所有默认值,可以单击【确定】按钮结束创建工作;由于本示例中的Customers数据库没有用默认值,因此还需要继续下面的可选步骤。
(6) 在【所有者】下拉列表框中可以选择数据库的所有者。数据库的所有者是对数据库有完全操作权限的用户。默认值表示当前登录Windows系统的是管理员账户。Customers数据库需要更改所有者名称,因此单击“...”按钮,打开【选择数据库所有者】对话框,如图6.3所示。在这个对话框中单击【浏览】按钮,打开【查找对象】对话框,如图6.4所示,在对话框中选择登录对象sa作为数据库的所 有者。
图6.3 选择数据库所有者
图6.4 选择对象
(7) 选中【使用全文索引】复选框,启用数据库的全文搜索。这样数据库中的变长复杂数据类型列也可以建立索引。
(8) 在Customer上添加新文件组。选中【文件组】页,单击【添加】按钮,接着输入文件组的名称“DefaultGroup”,并选中这个文件组的【默认值】选项,如图6.5所示。
图6.5 添加文件组
(9) 如果要更改主数据文件和事务日志文件的默认值,可以在【数据库文件】列表框中单击相应的单元并输入新值。对于Customers数据库,需要在主数据文件的【初始大小】栏中输入新的初始大小值10MB;接着单击【自动增长】栏中的“...”按钮,打开更改自动增长设置对话框(如图6.6所示),选中【按MB】单选按钮,将值更改为2MB,并选中【不限制文件增长】单选按钮;最后在日志文件的【路径】栏中输入新的日志文件路径“D:\DataBaseLog”。
图6.6 更改主数据文件的自动增长设置
(10) 在Customers数据库中添加新的数据文件Customers_1:在【常规】页中单击【添加】按钮,在【数据库文件】列表框中会添加一个新行,在【逻辑名称】栏中输入文件的名称“Customers1”,在【文件类型】栏中选择【数据】类型。在【文件组】中选择DefaultGroup文件组,其他接受默认值,如图6.7所示。
图6.7 添加数据文件和日志文件
(11) 在Customers数据库中添加新的日志文件Customers_Log1。在【常规】页中单击【添加】按钮,在【数据库文件】列表框中会添加一个新行,在【逻辑名称】栏中输入文件的名称“Customers_log1”,在【文件类型】栏中选择【日志】类型,在【路径】栏中输入新的路径“D:\DataBaseLog”,其他接受默认值。
(12) 如果要更改数据库的排序规则,可以选择【选项】页(如图6.8所示),然后在【排序规则】下拉列表框中选择一个排序规则。Customers数据库使用默认的排序规则。
图6.8 选择数据库的排序规则
提示
排序规则指定了SQL字符存储和比较所使用的规则,以及字符保存的结构。详细的排序规则定义可以参考SQL Server 2005的联机文档。
(13) 如果要更改恢复模式,可以在【选项】页的【恢复模式】下拉列表框中选择一个恢复模式,如图6.9所示。Customers数据库使用【完整】模式。
图6.9 选择恢复模式
提示
恢复模式的具体定义,可以参考后面章节的相关内容。
(14) 如果要更改数据库选项,可以选择【选项】页,然后修改数据库的选项。Customers数据库不需要更改这些选项。
(15) 单击【确定】按钮完成数据库的创建。
(16) 在执行完以上步骤后,SQL Server数据库引擎就会在数据库实例中创建一个新的数据库Customers,如图6.10所示。
图6.10 创建了一个新的数据库Customers
6.3.2 通过Transact-SQL代码创建数据库
除了可以通过SQL Server Management Studio的图形化界面创建数据库外,还可以使用Transact-SQL语言提供的CREATE DATABASE语句来创建数据库。对于具有丰富的编程经验的用户,后一种方法更加简单有效。下面首先介绍CREATE DATABASE语句的语法,接着描述了使用CREATE DATABASE语句创建上一节中的Customers示例数据库的方法。
1. CREATE DATABASE语句的语法和参数
CREATE DATABASE语句的语法约定如下所示。
CREATE DATABASE database_name
[ ON
[ PRIMARY ] [ <filespec> [ ,...n ]
[ , <filegroup> [ ,...n ] ]
]
[
[ LOG ON { <filespec> [ ,...n ] } ] ]
[ COLLATE collation_name ]
[ FOR { ATTACH [ WITH <service_broker_option> ]
| ATTACH_REBUILD_LOG }]
[ WITH <external_access_option> ]
]
[;]
<filespec> ::=
{
( 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 | GB | TB | % ] ]
) [ ,...n ]
}
<filegroup> ::=
{ FILEGROUP filegroup_name [ DEFAULT ]
<filespec> [ ,...n ] }
<external_access_option> ::=
{ DB_CHAINING { ON | OFF }
| TRUSTWORTHY { ON | OFF }
}
<service_broker_option> ::=
{ ENABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
}
CREATE DATABASE语句中的参数说明如下。
l database_name:新数据库的名称。数据库名称在 SQL Server 的实例中必须唯一,并且必须符合标识符规则。如果未指定数据文件的名称,则 SQL Server 使用database_name作为logical_file_name和os_file_name。
l ON:指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。当后面是以逗号分隔的、用以定义主文件组的数据文件的<filespec>项列表时,需要使用ON。主文件组的文件列表可后跟以逗号分隔的、用以定义用户文件组及其文件的<filegroup>项列表(可选)。
l PRIMARY:指定关联的<filespec>列表定义主文件。在主文件组的<filespec>项中指定的第一个文件将成为主文件。一个数据库只能有一个主文件。如果没有指定 PRIMARY,那么 CREATE DATABASE 语句中列出的第一个文件将成为主文件。
l LOG ON:指定显式定义用来存储数据库日志的磁盘文件(日志文件)。LOG ON后跟以逗号分隔的用以定义日志文件的<filespec> 项列表。如果没有指定 LOG ON,将自动创建一个日志文件,其大小为该数据库的所有数据文件大小总和的 25%,取两者之中的较大者。
l COLLATE collation_name:指定数据库的默认排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则分配为数据库的排序规则。不能使用 FOR ATTACH 或 FOR ATTACH_REBUILD_LOG 子句指定排序规则名称。
l FOR ATTACH:指定通过附加一组现有的操作系统文件来创建数据库。必须有一个指定主文件的 <filespec> 项。至于其他 <filespec> 项,只需要指定与第一次创建数据库或上一次附加数据库时路径不同的文件的那些项即可。必须有一个<filespec>项指定这些文件。FOR ATTACH 具有以下要求:所有数据文件(MDF 和 NDF)都必须可用;如果存在多个日志文件,这些文件都必须可用;如果一个可读/写数据库具有一个当前不可用的日志文件,并且进行附加操作前在没有被使用或打开情况下关闭了该数据库,那么FOR ATTACH会自动重新生成日志文件并更新主文件。相比之下,对于只读数据库,由于主文件不能更新,将不能重新生成日志。因此,如果附加一个日志不可用的只读数据库,必须在 FOR ATTACH 子句中提供日志文件或文件。
l FOR ATTACH_REBUILD_LOG:指定通过附加一组现有的操作系统文件来创建数据库。该选项只限于读/写数据库。如果缺少一个或多个事务日志文件,将重新生成日志文件。必须有一个指定主文件的 <filespec> 项。 使用FOR ATTACH_REBUILD_LOG参数必须确保完全关闭数据库并且所有数据文件都 可用。
l <filespec>:控制文件属性。
l NAME logical_file_name:指定文件的逻辑名称。在Creat Name中命名用了下面介绍指定FILENAME参数时,就需要设置NAME参数,除非指定FOR ATTACH子句之一。
l logical_file_name:引用文件时,SQL Server 中使用的逻辑名称。logical_file_name 必须在数据库中唯一,必须符合标识符规则。名称可以是字符或 Unicode 常量,也可以是常规标识符或分隔标识符。
l FILENAME ' os_file_name ':指定操作系统(物理)文件名称。os_file_name是创建文件时由操作系统使用的路径和文件名。文件必须驻留在下列设备中:安装 SQL Server 的本地服务器、存储局域网络(Storage Area Network,简称SAN)或基于 iSCSI 的网络。执行 CREATE DATABASE 语句前,指定路径必须存在。日志文件一定不要放在压缩文件系统中。
l SIZE size:指定文件的大小。size是文件的初始大小。如果没有为主文件提供初始大小,则数据库引擎将使用model数据库中的主文件的大小。如果指定了辅助数据文件或日志文件,但未指定该文件的初始大小,则数据库引擎将以 1 MB 作为该文件的大小。此外,为数据库主文件指定的大小至少应与model数据库的主文件大小相同。可以使用千字节(KB)、兆字节(MB)、千兆字节(GB)或兆兆字节(TB)单位,默认值为 MB。这个值必须为整数,对于大于 2 147 483 647 的值,使用更大的单位。
l MAXSIZE max_size:指定文件可增大到的最大大小。max_size 表示最大的文件大小。可以使用KB、MB、GB和TB单位,默认值为MB。如果不指定文件的最大尺寸,则文件将增长到磁盘被充满为止。这个值必须为整数,对于大于 2 147 483 647 的值,使用更大的单位。
l UNLIMITED:指定文件将增长到整个磁盘。在 SQL Server 2005 中,规定日志文件可增长的最大大小为 2TB,而数据文件的最大大小为 16TB。
l FILEGROWTH growth_increment:指定文件的自动增量。文件的 FILEGROWTH 设置不能超过 MAXSIZE 设置。growth_increment表示每次需要新空间时为文件添加的空间量。值为 0 时表明自动增长被设置为关闭,不允许增加空间。如果未指定 FILEGROWTH,则数据文件的默认值为1MB,日志文件的默认增长比例为10%,并且最小值为64KB。
l <filegroup>:控制文件组属性。
l FILEGROUP filegroup_name:文件组的逻辑名称。filegroup_name必须在数据库中唯一,不能是系统提供的名称 PRIMARY 和 PRIMARY_LOG。名称可以是字符或Unicode常量,也可以是常规标识符或分隔标识符。名称必须符合标识符规则。
l DEFAULT:指定命名文件组为数据库中的默认文件组。
l <external_access_option>:控制外部与数据库之间的双向访问。
l DB_CHAINING { ON | OFF }:当指定为 ON 时,可以连接跨数据库服务器的链接源或目标。当为 OFF 时,数据库不能参与跨数据库所有权的链接。默认值 为OFF。
l TRUSTWORTHY { ON | OFF }:当指定为ON时,使用模拟上下文的数据库模块(例如,视图、用户定义函数或存储过程)可以访问数据库以外的资源。当为OFF时,模拟上下文中的数据库模块不能访问数据库以外的资源。默认值为OFF。
l <service_broker_option>:控制数据库上的Service Broker选项。
l ENABLE_BROKER:对指定的数据库启用 Service Broker服务。
l NEW_BROKER:在sys.databases 和还原数据库中创建一个新的 service_ broker_guid 值。
l ERROR_BROKER_CONVERSATIONS:结束所有会话,并产生一个错误信息指出数据库已附加或还原。
2. 使用CREATE DATABASE语句创建Customers数据库
使用一条 CREATE DATABASE 语句就可以创建数据库以及存储该数据库的文件。SQL Server通过使用以下步骤实现CREATE DATABASE语句: 首先,SQL Server 2005 数据库引擎使用model数据库的副本初始化该数据库及其元数据;接着,为数据库分配 Service Broker GUID;最后,使用空页填充数据库的剩余部分(包含记录数据库中空间使用情况的内部数据页除外)。在一个 SQL Server 的实例中最多可以指定32 767个数据库。
下面使用CREATE DATABASE语句重新创建上一节中创建的Customers示例数据库。具体步骤如下。
(1) 打开SQL Server Management Studio,并用【Windows身份验证】登录。
(2) 选中数据库实例,右击,从弹出的快捷菜单中选择【新建查询选项】命令,打开查询编辑窗口。
(3) 在查询编辑窗口中输入如下的Transact-SQL语句:
CREATE DATABASE Customers
ON PRIMARY
(
NAME = Customers,
FILENAME = 'C:\Program Files\Microsoft SQL Server\ MSSQL.1\MSSQL\DATA\ Customers.mdf',
SIZE = 10,
MAXSIZE = UNLIMITED,
FILEGROWTH = 2
),
FILEGROUP DefaultGroup
(
NAME = Customers_1,
FILENAME = 'C:\Program Files\Microsoft SQL Server\ MSSQL.1\ MSSQL\DATA\ Customers_1.ndf',
SIZE = 3MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1MB
)
LOG ON
(
NAME = Customers_log,
FILENAME = 'D:\DataBaseLog \Customers_log.ldf',
SIZE = 1MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%
),
(
NAME = Customers_log1,
FILENAME = 'D:\DataBaseLog\Customers_log1.ldf',
SIZE =3MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%
)
(4) 单击工具栏上的【执行】按钮执行上面输入的SQL语句。
(5) 在查询执行后,查询结果窗口中会返回查询执行的结果。如果查询执行没有错误,在对象资源管理窗口中展开数据库实例下的【数据库】项,可以看到新建的Customers数据库,如图6.11所示。
注意
在重新创建Customers数据库前,必须首先删除上一节中建立的Customers数据库。
提示
在创建数据库时,请根据数据库中预期的最大数据量,创建尽可能大的数据文件。另外,创建、修改或删除用户数据库后,应备份 master 数据库。
图6.11 使用CREATE DATABASE语句创建Customers数据库
要缩小某个分区的容量大小,该分区内必须存在未被使用的磁盘空间;要增大某个分区的容量大小,必须存在紧邻该分区的自由空间。
温馨提示:答案为网友推荐,仅供参考