第 3章 数据库文件管理
3.1 数据库存储结构
3.2 创建数据库
3.3 修改数据库
3.4 删除数据库
3.5 检索数据库信息第
3
章数据库文件管理
< >
3.1 数据库存储结构
3.1.1 数据库文件和文件组
数据库文件
SQL Server 2000数据库文件有三种类型:主要数据文件
(,mdf)、次要数据文件(,ndf)和日志文件(,ldf) 。 每个数据库都必须有一个主要数据文件;而次要数据文件不作要求,可以没有,也可以有多个;每个数据库必须至少有一个日志文件,但可以有多个。
文件组文件组( primary)、用户定义的文件组和默认的文件组
(default)。 SQL Server 2000至少包含一个文件组,即主文件组。
< >
第
3
章数据库文件管理
3.1.2 数据库文件的空间分配数据库建立起来后,系统自动为数据文件和日志文件分配了一定的空间,默认大小为 1MB,用户可以根据需要重新为其分配空间。具体方法为:展开服务器组,然后展开服务器实例;找到相应的数据库,单击鼠标右键,在弹出的快捷菜单中选择,属性,命令,打开数据库属性对话框。在,数据文件,或,事务日志,选项卡中的,分配的空间,栏里填入新的空间大小。
注意:重新指定的数据库分配空间必须大于现有空间,否则
SQL Server将会报错 。
< >
3.1.3 数据库规划通常根据以下事实进行计算:
一个数据库的最小尺寸必须大于或等于 model数据库的大小,因为新建数据库是 model数据库的拷贝 。
估算数据库的大小 。
第
3
章数据库文件管理
< >
3.2 创建数据库
3.2.1 使用 SQL Server 企业管理器创建数据库
3.2.2 使用创建数据库向导创建数据库
3.2.3 使用 Creat Database 语句创建数据库
Creat Database 语句的语法结构如下:
第
3
章数据库文件管理
< >
第
3
章数据库文件管理
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 ]
< >
其中:
ldatabase_name:新数据库的名称 。 数据库名称在服务器中必须惟一,并且符合标识符的规则 。 database_name 最多可以包含 128 个字符,除非没有为日志指定逻辑名 。 如果没有指定日志文件的逻辑名,则 SQL Server 会通过向 database_name 追 加 后 缀 来 生 成 逻 辑 名 。 该 操 作 要 求
database_name 在 123 个字符之内,以便生成的日志文件逻辑名少于 128
个字符 。
lON:指定显式定义用来存储数据库数据部分的磁盘文件 ( 数据文件 ) 。 该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义主文件组的数据文件 。 主文件组的文件列表后可跟以逗号分隔的 <filegroup>
项列表 ( 可选 ),<filegroup> 项用以定义用户文件组及其文件 。
lLOG ON:指定显式定义用来存储数据库日志的磁盘文件 ( 日志文件 ) 。 该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义日志文件 。 如果没有指定 LOG ON,将自动创建一个日志文件,该文件使用系统生成的名称,大小为数据库中所有数据文件总大小的 25%。
lPRIMARY:指定关联的 <filespec> 列表定义主文件 。 主文件组包含所有数据库系统表 。 还包含所有未指派给用户文件组的对象 。 主文件组的第一个
<filespec> 条目成为主文件,该文件包含数据库的逻辑起点及其系统表 。
一个数据库只能有一个主文件 。 如果没有指定 PRIMARY,那么 CREATE
DATABASE 语句中列出的第一个文件将成为主文件 。
第
3
章数据库文件管理第
3
章数据库文件管理
lNAME:为由 <filespec> 定义的文件指定逻辑名称 。 如果指定了 FOR
ATTACH,则不需要指定 NAME 参数 。
llogical_file_name:用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称 。 logical_file_name 在数据库中必须惟一,并且符合标识符的规则 。 该名称可以是字符或 Unicode 常量,也可以是常规标识符或定界标识符 。
lFILENAME:为 <filespec> 定义的文件指定操作系统文件名 。
lSIZE:指定 <filespec> 中定义的文件的大小 。 如果主文件的
<filespec> 中没有提供 SIZE 参数,那么 SQL Server 将使用 model 数据库中的主文件大小 。 如果次要文件或日志文件的 <filespec> 中没有指定 SIZE 参数,则 SQL Server 将使文件大小为 1 MB。
lMAXSIZE:指定 <filespec> 中定义的文件可以增长到的最大大小 。
lFILEGROWTH:指定 <filespec> 中定义的文件的增长增量 。 文件 的
FILEGROWTH 设置不能超过 MAXSIZE 设置 。
< >
第
3
章数据库文件管理下面用 Creat Database语句来创建 Educational数据库,其主文件大小为 10MB,最大为 20MB,增长方式为 10% ;日志文件的大小为 2MB,最大为 6MB,增长方式为 1MB。
CREATE DATABASE Educational
ON
PRIMARY (NAME=EducationalData,
FILENAME=’C:\Program Files\Microsoft SQL
Server\MSSQL\DATA\Education_Data.mdf’,
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=10%)
LOG ON (NAME=EducationalLog,
FILENAME=’C:\Program Files\Microsoft SQL
Server\MSSQL\DATA\Education_Log.ldf’,
SIZE=2MB,
MAXSIZE=6MB,
FILEGROWTH=1MB)
< >
创建数据库后,可以对其原始定义进行修改。修改包括:
扩充分配给数据库的数据或事务日志空间。
收缩分配给数据库的数据或事务日志空间。
添加或删除数据和事务日志文件。
创建文件组。
创建默认文件组。
更改数据库的配置设置。
脱机放置数据库。
附加新数据库或分离未使用的数据库。
更改数据库名称。
更改数据库的所有者。
3.3 修改数据库第
3
章数据库文件管理
< >
3.3.1 使用 SQL Server 企业管理器修改数据库
3.3.2 使用 ALTER DATABASE语句修改数据库
ALTER DATABASE语句的语法结构:
ALTER DATABASE database
{ ADD FILE < filespec > [,...n ] [ TO FILEGROUP
filegroup_name ]
| ADD LOG FILE < filespec > [,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property |
NAME = new_filegroup_name }
| SET < optionspec > [,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}
第
3
章数据库文件管理
< >
第
3
章数据库文件管理
< >
其中:
ldatabase:要更改的数据库的名称 。
l ADD FILE:指定要添加的文件 。
l TO FILEGROUP:指定要将指定文件添加到的文件组 。
l filegroup_name:要添加指定文件的文件组名称 。
l ADD LOG FILE:指定要将日志文件添加到指定的数据库 。
l REMOVE FILE:从数据库系统表中删除文件描述并删除物理文件 。 只有在文件为空时才能删除 。
l ADD FILEGROUP:指定要添加文件组 。
lfilegroup_name:是要添加或除去的文件组名称 。
l REMOVE FILEGROUP:从数据库中删除文件组并删除该文件组中的所有文件 。 只有在文件组为空时才能删除 。
lMODIFY FILE:指定要更改给定的文件 。
lMODIFY NAME = new_dbname:重命名数据库 。
l MODIFY FILEGROUP filegroup_name { filegroup_property | NAME =
new_filegroup_name }:指定要修改的文件组和所需的改动 。
第
3
章数据库文件管理
< >
【 例 】 扩大主要数据文件的大小到 12MB,扩大事务日志文件的大小到 4MB 。
ALTER DATABASE Educational
MODIFY FILE (NAME=’EducationalData’,SIZE=12MB)
第
3
章数据库文件管理
< >
3.4 删除数据库
3.4.1 使用 SQL Server 企业管理器删除数据库
3.4.2 使用 DROP 语句删除数据库
DROP DATABASE database_name [,...n ]
其中:
database_name:指定要删除的数据库名称。
第
3
章数据库文件管理
< >
3.5 检索数据库信息
3.5.1 查看数据库定义信息
用企业管理器查看数据库定义信息
用 T-SQL语句查看数据库定义信息
EXEC sp_helpdb database_name
其中,参数 database_name为需要查看的数据库的名称。
【 例 】 查看数据库 Educational的定义信息 。
EXEC sp_helpdb Educational
3.5.2 查看数据库数据空间
3.1 数据库存储结构
3.2 创建数据库
3.3 修改数据库
3.4 删除数据库
3.5 检索数据库信息第
3
章数据库文件管理
< >
3.1 数据库存储结构
3.1.1 数据库文件和文件组
数据库文件
SQL Server 2000数据库文件有三种类型:主要数据文件
(,mdf)、次要数据文件(,ndf)和日志文件(,ldf) 。 每个数据库都必须有一个主要数据文件;而次要数据文件不作要求,可以没有,也可以有多个;每个数据库必须至少有一个日志文件,但可以有多个。
文件组文件组( primary)、用户定义的文件组和默认的文件组
(default)。 SQL Server 2000至少包含一个文件组,即主文件组。
< >
第
3
章数据库文件管理
3.1.2 数据库文件的空间分配数据库建立起来后,系统自动为数据文件和日志文件分配了一定的空间,默认大小为 1MB,用户可以根据需要重新为其分配空间。具体方法为:展开服务器组,然后展开服务器实例;找到相应的数据库,单击鼠标右键,在弹出的快捷菜单中选择,属性,命令,打开数据库属性对话框。在,数据文件,或,事务日志,选项卡中的,分配的空间,栏里填入新的空间大小。
注意:重新指定的数据库分配空间必须大于现有空间,否则
SQL Server将会报错 。
< >
3.1.3 数据库规划通常根据以下事实进行计算:
一个数据库的最小尺寸必须大于或等于 model数据库的大小,因为新建数据库是 model数据库的拷贝 。
估算数据库的大小 。
第
3
章数据库文件管理
< >
3.2 创建数据库
3.2.1 使用 SQL Server 企业管理器创建数据库
3.2.2 使用创建数据库向导创建数据库
3.2.3 使用 Creat Database 语句创建数据库
Creat Database 语句的语法结构如下:
第
3
章数据库文件管理
< >
第
3
章数据库文件管理
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 ]
< >
其中:
ldatabase_name:新数据库的名称 。 数据库名称在服务器中必须惟一,并且符合标识符的规则 。 database_name 最多可以包含 128 个字符,除非没有为日志指定逻辑名 。 如果没有指定日志文件的逻辑名,则 SQL Server 会通过向 database_name 追 加 后 缀 来 生 成 逻 辑 名 。 该 操 作 要 求
database_name 在 123 个字符之内,以便生成的日志文件逻辑名少于 128
个字符 。
lON:指定显式定义用来存储数据库数据部分的磁盘文件 ( 数据文件 ) 。 该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义主文件组的数据文件 。 主文件组的文件列表后可跟以逗号分隔的 <filegroup>
项列表 ( 可选 ),<filegroup> 项用以定义用户文件组及其文件 。
lLOG ON:指定显式定义用来存储数据库日志的磁盘文件 ( 日志文件 ) 。 该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义日志文件 。 如果没有指定 LOG ON,将自动创建一个日志文件,该文件使用系统生成的名称,大小为数据库中所有数据文件总大小的 25%。
lPRIMARY:指定关联的 <filespec> 列表定义主文件 。 主文件组包含所有数据库系统表 。 还包含所有未指派给用户文件组的对象 。 主文件组的第一个
<filespec> 条目成为主文件,该文件包含数据库的逻辑起点及其系统表 。
一个数据库只能有一个主文件 。 如果没有指定 PRIMARY,那么 CREATE
DATABASE 语句中列出的第一个文件将成为主文件 。
第
3
章数据库文件管理第
3
章数据库文件管理
lNAME:为由 <filespec> 定义的文件指定逻辑名称 。 如果指定了 FOR
ATTACH,则不需要指定 NAME 参数 。
llogical_file_name:用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称 。 logical_file_name 在数据库中必须惟一,并且符合标识符的规则 。 该名称可以是字符或 Unicode 常量,也可以是常规标识符或定界标识符 。
lFILENAME:为 <filespec> 定义的文件指定操作系统文件名 。
lSIZE:指定 <filespec> 中定义的文件的大小 。 如果主文件的
<filespec> 中没有提供 SIZE 参数,那么 SQL Server 将使用 model 数据库中的主文件大小 。 如果次要文件或日志文件的 <filespec> 中没有指定 SIZE 参数,则 SQL Server 将使文件大小为 1 MB。
lMAXSIZE:指定 <filespec> 中定义的文件可以增长到的最大大小 。
lFILEGROWTH:指定 <filespec> 中定义的文件的增长增量 。 文件 的
FILEGROWTH 设置不能超过 MAXSIZE 设置 。
< >
第
3
章数据库文件管理下面用 Creat Database语句来创建 Educational数据库,其主文件大小为 10MB,最大为 20MB,增长方式为 10% ;日志文件的大小为 2MB,最大为 6MB,增长方式为 1MB。
CREATE DATABASE Educational
ON
PRIMARY (NAME=EducationalData,
FILENAME=’C:\Program Files\Microsoft SQL
Server\MSSQL\DATA\Education_Data.mdf’,
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=10%)
LOG ON (NAME=EducationalLog,
FILENAME=’C:\Program Files\Microsoft SQL
Server\MSSQL\DATA\Education_Log.ldf’,
SIZE=2MB,
MAXSIZE=6MB,
FILEGROWTH=1MB)
< >
创建数据库后,可以对其原始定义进行修改。修改包括:
扩充分配给数据库的数据或事务日志空间。
收缩分配给数据库的数据或事务日志空间。
添加或删除数据和事务日志文件。
创建文件组。
创建默认文件组。
更改数据库的配置设置。
脱机放置数据库。
附加新数据库或分离未使用的数据库。
更改数据库名称。
更改数据库的所有者。
3.3 修改数据库第
3
章数据库文件管理
< >
3.3.1 使用 SQL Server 企业管理器修改数据库
3.3.2 使用 ALTER DATABASE语句修改数据库
ALTER DATABASE语句的语法结构:
ALTER DATABASE database
{ ADD FILE < filespec > [,...n ] [ TO FILEGROUP
filegroup_name ]
| ADD LOG FILE < filespec > [,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property |
NAME = new_filegroup_name }
| SET < optionspec > [,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}
第
3
章数据库文件管理
< >
第
3
章数据库文件管理
< >
其中:
ldatabase:要更改的数据库的名称 。
l ADD FILE:指定要添加的文件 。
l TO FILEGROUP:指定要将指定文件添加到的文件组 。
l filegroup_name:要添加指定文件的文件组名称 。
l ADD LOG FILE:指定要将日志文件添加到指定的数据库 。
l REMOVE FILE:从数据库系统表中删除文件描述并删除物理文件 。 只有在文件为空时才能删除 。
l ADD FILEGROUP:指定要添加文件组 。
lfilegroup_name:是要添加或除去的文件组名称 。
l REMOVE FILEGROUP:从数据库中删除文件组并删除该文件组中的所有文件 。 只有在文件组为空时才能删除 。
lMODIFY FILE:指定要更改给定的文件 。
lMODIFY NAME = new_dbname:重命名数据库 。
l MODIFY FILEGROUP filegroup_name { filegroup_property | NAME =
new_filegroup_name }:指定要修改的文件组和所需的改动 。
第
3
章数据库文件管理
< >
【 例 】 扩大主要数据文件的大小到 12MB,扩大事务日志文件的大小到 4MB 。
ALTER DATABASE Educational
MODIFY FILE (NAME=’EducationalData’,SIZE=12MB)
第
3
章数据库文件管理
< >
3.4 删除数据库
3.4.1 使用 SQL Server 企业管理器删除数据库
3.4.2 使用 DROP 语句删除数据库
DROP DATABASE database_name [,...n ]
其中:
database_name:指定要删除的数据库名称。
第
3
章数据库文件管理
< >
3.5 检索数据库信息
3.5.1 查看数据库定义信息
用企业管理器查看数据库定义信息
用 T-SQL语句查看数据库定义信息
EXEC sp_helpdb database_name
其中,参数 database_name为需要查看的数据库的名称。
【 例 】 查看数据库 Educational的定义信息 。
EXEC sp_helpdb Educational
3.5.2 查看数据库数据空间