创建数据库
create database DB_Book -- 数据库名,在现有连接中不可重复
on
primary -- 主文件
(name = 'DB_Book', -- 数据文件逻辑名filename = 'D:\A_file\数据库\图书管理\DB_Book.mdf', -- 文件名及位置size = 1mb, -- 初始大小maxSize = 10mb, -- 最大filegrowth = 10% -- 增长方式
)
log on -- 日志文件
(name = 'DB_Book_log',filename = 'D:\A_file\数据库\图书管理\DB_Book.ldf',size = 1mb,maxSize = 10mb,filegrowth = 2mb
)
注意事项:
1、程序执行前应先判断该数据库是否已经存在
2、注释为 –
3、程序不区分大小写
4、写代码时,所有英文字母、数字、标点符号、空格、注释语句都要在英文状态下写,会减少很多错误
例一:
创建一个图书管理数据库,名字为DB_Book
1、主数据文件名为DB_Book,主文件组的主数据文件存储路径及文件名为 ”D:\A_file\数据库\图书管理\DB_Book.mdf“ ,数据文件初始大小设置为2mb,文件最大空间仅受磁盘限制,增长方式按照10%增长。
2、日志文件逻辑名为DB_Book_log,日志文件存储路径及文件名为 “D:\A_file\数据库\图书管理\DB_Book.ldf”,日志文件初始大小为1mb,文件最大空间受磁盘限制,数据文件按空间增长方式为每次2mb增长。
3、在主文件组下生成辅助数据文件,辅助数据文件名为DB_Book01,辅助文件的存储路径及文件名为“D:\A_file\数据库\图书管理\DB_Book01.ndf”,数据文件初始大小为2mb,文件最大空间仅受磁盘限制,增长方式按照10%增长。
4、自定义文件组Book,在Book下生成辅助数据文件,辅助数据文件逻辑名为DB_Book02,辅助文件的存储路径及文件名为“D:\A_file\数据库\图书管理\DB_Book02.ndf”,数据文件初始大小为2mb,文件最大空间仅受磁盘限制,增长方式按照10%增长。
代码实现如下:
create database DB_Book -- 数据库名,在现有连接中不可重复
on
primary -- 主文件
(name = 'DB_Book', -- 数据文件逻辑名filename = 'D:\A_file\数据库\图书管理\DB_Book.mdf', -- 文件名及位置size = 1mb, -- 初始大小maxSize = unlimited, -- 最大filegrowth = 10% -- 增长方式
),
-- 在主文件组下生成辅助数据文件'DB_Book01
(name = 'DB_Book01',filename = 'D:\A_file\数据库\图书管理\DB_Book01.ndf',size = 2mb, -- 初始大小maxSize = unlimited, -- 最大filegrowth = 10% -- 增长方式
),
-- 自定义文件组Book,在Book下生成辅助数据文件
filegroup Book
(name = 'DB_Book02',filename = 'D:\A_file\数据库\图书管理\DB_Book02.ndf',size = 2mb, -- 初始大小maxSize = unlimited, -- 最大filegrowth = 10% -- 增长方式
)
log on -- 日志文件
(name = 'DB_Book_log',filename = 'D:\A_file\数据库\图书管理\DB_Book.ldf',size = 1mb,maxSize = unlimited,filegrowth = 2mb
)
维护数据库
1、查看数据库信息
最常用的方法是调用系统存储过程sp_helpdb
语法格式:
execute sp_helpdb 数据库名
2、增加数据库文件的初始化大小
不能比之前小于等于,只能增大
alter database 数据库名
modify file (name = 文件逻辑名,size = 文件大小)
3、调整文件自动增长大小
alter database 数据库名
modify file (name = 文件逻辑名,filegrowth = 文件增长量)
4、数据库的重命名
execute sp_renamedb 原数据库名,新名
5、数据库的删除
drop database 数据库名
首先要脱机,会删除对应文件
不脱机的话,生成的的文件不会删除,只是删除了连接
附加与分离数据库
1、数据库的分离
通过系统存储过程sp_detach_db 实现
execute sp_detach_db 数据库名 -- 不会删除相关联的全文索引文件
2、数据库的附加
SQL2005后版本不支持sp_attach_db附加,可使用create database命令实现数据库的附加
create database test -- 数据库名
on
(name = 'test', -- 主数据文件逻辑名称filename = 'D:\A_file\数据库\图书管理\test.mdf' -- 主数据文件物理名称
)
for attach
备份与恢复数据库
1、数据库的备份
一、先创建一个备份设备,再将数据库备份到备份设备上
sp_addumpdevice '设备类型','逻辑名称','物理名称'-- 设备名称:备份设备的类型,如果是硬盘,为disk
-- 逻辑名称:备份设备的逻辑名称
-- 物理名称:备份设备的物理名称,必须包括完整的路径
二、直接将数据库备份到物理设备上
backup database 数据库名 to 设备名称(逻辑名称或物理名称)
[with [name=备份集名称][,init|noinit]]-- 备份设备:备份设备的逻辑名称或物理名称
-- 备份集名称:指生成的备份集的名称
-- init:表示新备份的数据会覆盖备份设备上原有的备份数据
-- noinit: 追加到原有数据的后面
三、事务日志备份
backup log 数据库名 to备份设备(逻辑名称或物理名称)
[with [name=备份集名称][,init|noinit]]
数据库的恢复
restore database 数据库名 from 备份设备
[with [file = n] [,norecovery|recovery] [,replace]]-- file = n:表示从逻辑备份设备上第几个备份中恢复
-- recovery:在数据库恢复完成后,SQL回滚被恢复的数据库中所有未完成的事务,以保证数据库的完整性和一致性。recovery用于最后一个备份的还原。
-- norecovery:在数据库恢复完成后,SQL不会回滚被恢复的数据库中所有未完成的事务,恢复后的数据库可能不能使用,所以还需要recovery再一次还原,以保证数据库的完整性和一致性。
-- replace:表示要创建一个新的数据库,并将备份还原到新的数据库。如果服务器上存在一个同名的数据库,则原来的数据库会被删除
例;
从备份设备DatBak中替代还原数据库Student_mg
restore database Student_mg from DatBak with replace
恢复事务日志:
restore log 数据库名 from 备份设备
[with [file = n] [,norecovery|recovery]]
恢复指定文件:
restore database 数据库名
file = 文件名|filegroup = 文件组名 from 备份设备
[with partial [,file = n] [,norecovery] [,replace]]
恢复文件或文件组:
restore database 数据库名
file = 文件名|filegroup = 文件组名 from 备份设备
[with [,file = n] [,norecovery] [,replace]]