数据库管理的核心任务是创建和维护数据库。
一、SQL Server数据库的组成
1、系统数据库
系统数据库主要有master、model、tempdb、msdb四个数据库,下面是这四个数据库的简单介绍;
master:是SQL Server2008的核心数据库,这个数据库如果损坏,那么SQL Server将没法正常的运行。这个家伙什么这么重要呢?呵呵,因为这个家伙手中掌握着如下重要的机密数据:
a、所有的用户登录名及用户ID所属的角色
b、数据库的存储路径
c、服务器中数据库的名称及相关信息
d、所有的系统配置设置,包括数据排序的信息、安全实现、恢复模式
e、SQL Server的初始化信息
既然这货很重要所以在日常的维护中对master数据库进行定期的备份就显得非常的重要了。
model:创建数据库的一套模板,同时也是tempdb的基础,所以对model进行操作的时候应该多多的考虑一下。
temdb:是一个临时工。既然是临时工,那肯定是不能肩负核心重任的。仅存在于SQL Server 的会话期间,一旦会话结束,则关闭该数据库,当下一次打开的时候会建立一个全新的、空的tempdb数据库;主要的作用是存储用户建立的临时表和临时的存储过程,存储用户定的全局变量。
msdb:其重要性不亚于master数据库;对该数据库的操作有一定的局限。
a、不能删除该数据库
b、不能从该数据库中删除guest用户
c、不能删除主文件组、主数据文件或者是日志文件
d、不能重命名主文件组或者是主数据文件
e、不能更改排序规则
f、不能将数据库设置为OFFLINE
g、将主文件组设置为READ_OLNY
2、数据库存储文件
在SQL Server2008中每个数据库至少要包含两个相关联的存储文件:数据文件和事务日志文件。并且数据文件和事务日志文件包含在独立的数据文件中。
主数据文件
主数据文件主要存放一些数据库的启动信息,并指向其他数据文件、用户数据、用户对象;另外一个数据库只能有一个主数据文件,默认的拓展名是.mdf
辅助数据文件
辅助数据文件主要存放用户数据,它可以将数据分散到不同的磁盘当中。其拓展名是.ndf
注:当数据库超过了单个Windows文件的限制,可以使用辅助数据文件,这样可以保证数据库可以继续的增长
事务日志文件
事务日志文件主要用于恢复数据库日志信息,每个数据库至少应该包括一个事务日志文件。默认的拓展名是.log
数据库元素
数据库中主要包含五种元素,分别是表、视图、索引、存储过程和触发器、用户和角色。后面会详细介绍这五个元素,在这里就不在赘述了。
二、数据库快照
这个概念其实灰常好理解哈。数据库在生产过程中变化是迅速的,最典型也是最应该知道就是数据库容量的变化。那数据库快照就是数据库在某一个时间点的状态。呵呵,有点抽象了。其实这货好比是一张照片。就是这么简单。当然了,给数据库搞这么一张照片也不是拿来炫耀的哈。数据库快照的功能是:提供了一种恢复数据库的手段,当数据库损坏的时候(当然这种情况不是很多哈,要不那估计你得回家了),通过数据库快照可以将数据库还原到一个快照前的一个状态。
1、使用数据库快照的时候的一些限制
a、不允许删除、还原和分离源数据库
b、不允许从源数据库或者是快照中删除任何数据文件
c、源数据库的性能会降低
d、源数据库中必须处在在线状态
2、创建数据库快照
1 create database test_kuaizhao2 on3 (4 name = test,5 filename = 'E:\SQL Server\test_kuaizhao.mdf'6 )7 as snapshot of test
3、使用数据库快照
1 restore database test2 from database_snapshot = test_kuaizhao3 go
4、删除数据库快照
1 drop database test_kuaizhao2 go
三、创建数据库
1、使用SQL语句创建一个简单的数据库1 create database test 2 on 3 ( 4 name = test_data, 5 filename = 'E:\sql server \ test_data.mdf', 6 size = 10MB, 7 maxsize = 15MB, 8 filegrowth = 10% 9 )10 log on11 (12 name = test_log,13 filename = 'E:\sql server\test_log.ldf',14 size = 3MB,15 maxsize = 8MB,16 filegrowth = 5%17 )
2、指定多个数据文件创建数据库
1 create database test 2 on 3 primary 4 ( 5 name = test_data, 6 filename = 'E:\sql server\test_data.mdf', 7 size = 10MB, 8 maxsize = 15MB, 9 filegrowth = 10%10 ),11 (12 name = test_data1,13 filename = 'E:\sql server\test_data1.ndf',14 size = 8MB,15 maxsize = 10MB,16 filegrowth = 10%17 )18 log on19 (20 name = test_log,21 filename = 'E:\sql server\test_log.ldf',22 size = 3MB,23 maxsize = 8MB,24 filegrowth = 5%25 )
3、创建指定多个文件组的数据库
1 create database test 2 on 3 primary 4 ( 5 name = test_data, 6 filename = 'E:\sql server \test_data.mdf', 7 size = 10MB, 8 maxsize = 15MB, 9 filegrowth = 10%10 ),11 (12 name = test_data1,13 filename = 'E:\sql server \test_data1.ndf',14 size = 8MB,15 maxsize = 10MB,16 filegrowth = 10%17 ),18 (19 name = test_data2,20 filename = 'E:\sql server \test_data2.ndf',21 size = 8MB,22 maxsize = 10MB,23 filegrowth = 10%24 ),25 filegroup dbgroup126 (27 name = test_data1_group1,28 filename = 'E:\sql server \test_data1_group1.ndf',29 size = 8MB,30 maxsize = 10MB,31 filegrowth = 10%32 ),33 (34 name = test_data2_group1,35 filename = 'E:\sql server \test_data2_group1.ndf',36 size = 8MB,37 maxsize = 10MB,38 filegrowth = 10%39 ),40 filegroup dbgroup241 (42 name = test_data1_group2,43 filename = 'E:\sql server \test_data1_group2.ndf',44 size = 8MB,45 maxsize = 10MB,46 filegrowth = 10%47 ),48 (49 name = test_data2_group2,50 filename = 'E:\sql server \test_data2_group2.ndf',51 size = 8MB,52 maxsize = 10MB,53 filegrowth = 10%54 ),55 log on56 (57 name = test_log,58 filename = 'E:\sql server\test_log.ldf',59 size = 3MB,60 maxsize = 8MB,61 filesize = 5%62 )
四、数据库的基本操作
1、修改数据库1 alter database test modify name = 测试
2、使用存储过程(可以修改数据库的名称)
1 exec sp_dboption 'test','single',true2 exec sp_renamedb,'test','测试'3 exec sp_dboption,'test','single',false
3、使用add file 添加文件
1 alter database test2 add file3 (4 name = test_data10,5 filename = 'E:\sql server\test_data10.mdf',6 size = 5MB,7 maxsize = 15MB,8 filegrowth = 10%9 )
4、删除数据库
1 drop database test
5、使用函数查看数据库的状态
1 use test2 go3 select databasepropertyex('test','status')4 as 'test数据库当前状态'
6、使用存储过程查看数据库的状态
1 sp_helpdb test
7、分离数据库
1 exec sp_detach_db test
注意:若要分离数据库,不应该存在下列的几种情况
a、该数据库中存在快照b、该数据库已经复制并且发布
c、数据库处于未知的状态
8、附加数据库
1 create database test 2 on 3 ( 4 filename = 'E:\sql server\test_data.mdf' 5 ) 6 log on 7 ( 8 filename = 'E:\sql server\test_log.ldf' 9 )10 for attach
五、优化数据库
这里简单介绍一下优化数据库
1、将数据文件和事务文件错放在不同磁盘上。这样在对数据库进行读写的时候,可以从多个不同的磁盘驱动器并发执行,提高了系统的运行效率,从而也提高了数据的使用效率。
2、利用文件组实现平衡负荷与并行访问(注意:文件组只能提高系统的性能而不能提高系统的稳定性)
六、疑问
数据库快照提供了恢复数据库的一个手段,不过使用数据库快照的时候又有种种的限制,比如说使用数据库会造成源数据库的性能降低,那在实际的生产过程中恢复数据库的手段有哪些?请各位大牛指点。