一预备知识提要:
创建数据库需要的权限
至少要拥有:
()create database;
()create any database;
()alter any database
数据库的上限
在同一实例中最多可以创建个数据库超过则会失败!
数据库文件和文件组
每个SQL Server 数据库至少包括个文件:
()数据文件 : 包含的是 数据库的数据和对象它分为主要数据文件和次
要数据文件扩展名分别为 mdf和ndf
()日志文件 : 包含的是 用于恢复数据库时所需要的信息它分为主要日志
文件和次要日志文件扩展名都为ldf
技巧:
在默认情况下数据库的数据文件和日志文件都保存在同一目录下但这并
不是最佳方案为了提高存储速度
强烈建议:
将数据文件和日志文件保存在不同的驱动器上!
文件组
为了方便对数据库文件进行管理可以将数据库文件集中起来放在文件组中
每个数据库都有一个主要文件组该组包括主要数据文件和未放入其他文件组的
所有次要文件当然用户也可自行定义不同的文件组
数据库状态
SQL Server 数据库永远处于特定的状态中包括种状态:
()online : 可以对数据进行访问(在线)
()offline: 数据库无法使用(离线)
()restoring : 表示正在还原主文件组的一个或多个文件或正在离线还原一个
或多个辅助文件此时数据库不可用(还原)
()recovering : 表示正在恢复数据库该状态是个暂时性的状态恢复成功
后数据库会自动回到在线状态(恢复)
()recovering pending : 此时数据库并未损坏但很有可能缺少文件此时
数据库不可用并等待用户执行操作来完成恢复工作(恢复等待)
()suspect : 表示数据库里的文件组(至少是主文件组)可疑或已经损坏SQL
Server 启动过程无法恢复数据库此时数据不能使用(可疑)
()emergency : 一般用于故障排除此时数据库处于单用户模式可以修复
或还原数据库标记为只读并禁用日志记录只有具备sysadmin服务
器角色的成员才能访问(紧急)
二 举例说明
例一: 创建一个数据库所有的设置采用默认值
create database 测试数据库
例二: 创建一个数据库指定数据库的数据文件所在位置
create database 例二数据库
on
(
name=例二数据库
filename=d:DBtest例二数据库mdf
)
例三:创建一个数据库指定数据库的数据文件所在位置初始容量最大容量
和文件增长的数量
create database 例三数据库
on
(
name=例三数据库
filename=d:DBtest例三数据库mdf
size=MB
maxsize=MB
filegrowth=%
)
例四: 创建一个数据库指定数据库的数据文件和日志文件所在位置
create database 例四数据库
on
(
name=例四数据库数据文件
filename=D:DBtest例四数据库数据文件mdf
size=MB
maxsize=MB
filegrowth=%
)
log on
(
name=例四数据库日志文件’
filename=D:DBtest例四数据库日志文件ldf
)
例五创建一个数据库它总共包含五个数据文件和两个自定义的文件组
create database 例五数据库
on
(
name=例五数据库数据文件
filename=d:DBtest例五数据库数据文件mdf
size=MB
maxsize=MB
filegrowth=%
)(
name=例五数据库数据文件
filename=d:DBtest例五数据库数据文件ndf
size=MB
maxsize=MB
filegrowth=%
)
filegroup 例五数据库数据文件组
(
name=例五数据库数据文件组的数据文件
filename=d:DBtest例五数据库数据文件组的数据文件ndf
size=MB
maxsize=MB
filegrowth=%
)
filegroup 例五数据库数据文件组
(
name=例五数据库数据文件组的数据文件
filename=d:DBtest例五数据库数据文件组的数据文件ndf
size=MB
maxsize=MB
filegrowth=%
)(
name=例五数据库数据文件组的数据文件
filename=d:DBtest例五数据库数据文件组的数据文件ndf
size=MB
maxsize=MB
filegrowth=%
)
log on
(
name=例五数据库日志
filename=d:DBtest例五数据库日志文件ldf
)
例六: 创建一个数据库并指定排序规则
create database 例六数据库
on
(
name=例六数据库
filename=d:DBtest例六数据库mdf
)
collate Chinese_PRC_CI_AS
在使用collate指定排序规则之前一定要先知道排序规则名
为何才能知道排序规则名呢?请用下面的SQL语句查询
select * from ::fn_helpcollations ()
三修改数据库设置
使用SQL Server Management Studio修改数据库设置
) 查看数据库的基本信息
【数据库属性】【 基本】选项页里可以看到数据库的基本信息
) 增加删除与修改数据库文件
【数据库属性】【文件】选项页里
重点 典型案例
例七: 将名为"例二数据库"的数据库改名为"例七数据库"
方法一:
alter database 例二数据库
modify name = 例七数据库
方法二:
exec sp_renamedb 例二数据库例七数据库
例八为“例六数据库”增加一个数据文件
alter database 例六数据库
add file (name=增加的数据文件
filename=d:DBtest例六数据库增加的数据文件ndf)
例九为“例六数据库”增加一个日志文件
alter database 例六数据库
add log file (name=例九增加的日志文件
filename=d:DBtest例九增加的日志文件ldf
size=MB
maxsize=MB
filegrowth=% )
例十将“例六数据库”中名为“增加的数据文件”的数据文件改名
alter database 例六数据库
modify file(name=增加的数据文件
newname = 例十数据文件
filename = d:DBtest例十数据文件ndf)
例十一: 修改’例六数据库’的排序规则
alter database 例六数据库
collate Chinese_PRC_CI_AS_KS
例十二: 在’例六数据库’里删除一个数据文件
alter database 例六数据库
remove file 例十数据文件
例十三: 在’例六数据库’里添加一个文件组
alter database 例六数据库
add filegroup 例十三文件组
例十四: 在’例六数据库’里为一个文件组改名
alter database 例六数据库
modify filegroup 例十三文件组
name=例十四文件组
例十五: 在’例六数据库’里添加一个数据文件(如例十五数据文件)到一个文件组(如例十四文件组)并将该文件组设置为默认文件组因alter database一次只能修改数据库的一个属性故下例中使用了个alter database语句
alter database 例六数据库
add file (name=例十五数据文件
filename=’d:DBtest例十五数据文件ndf’)
to filegroup 例十四文件组
go
alter database 例六数据库
modify filegroup 例十四文件组 default
例十六: 在“例六数据库”里删除“例十四文件组”由于“例十四文件组”是默认文件组其中又包含了一个文件(例十五数据文件)故要从“例六数据库”中删除“例十四文件组”必须先进行以下操作
()将其他文件组设置为默认文件组如本例中将PRIMARY文件组设置为默认文件组
由于PRIMARY是保留字故在使用它的时候要用方括号括起来
alter database 例六数据库
modify filegroup [PRIMARY] default
()删除“例十四文件组”中包含的“例十五数据文件”
alter database 例六数据库
remove file 例十五数据文件
()删除“例十四文件组”
alter database 例六数据库
remove filegroup 例十四文件组
例十七将“例六数据库”里的一个文件组设置为只读
()由于primary文件组是不能设置为只读的故先添加一个文件组(如例十七文件组)
alter database 例六数据库
add filegroup 例十七文件组
()由于空文件组(如例十七文件组)是不能设置为只读的所以要再添加一个文件(如例十七数据文件)到该文件组中
alter database 例六数据库
add file (name=例十七数据文件
filegroup=’d:Dbtest例十七数据文件ndf’)
to filegroup 例十七文件组
()将文件组(例十七文件组)
alter database 例六数据库
modify filegroup 例十七文件组 read_only
例十八将“例六数据库”设置为只有一个用户可访问
alter database 例六数据库
set single_user
例十九设置“例六数据库”可自动收缩
alter database 例六数据库
set auto_shrink on