SQL Server2008 学习笔记(三) 数据库管理

数据库管理的核心任务是创建维护数据库。

一、SQL Server数据库的组成

1、系统数据库

系统数据库主要有mastermodel、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_kuaizhao
2 on
3 (
4 name = test,
5 filename = 'E:\SQL Server\test_kuaizhao.mdf'
6 )
7 as snapshot of test

3、使用数据库快照

1 restore database test
2 from database_snapshot = test_kuaizhao
3 go

4、删除数据库快照

1 drop database test_kuaizhao
2 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 on
11 (
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 on
19 (
20 name = test_log,
21 filename = 'E:\sql server\test_log.ldf',
22 size = 3MB,
23 maxsize = 8MB,
24 filegrowth = 5%
25 )

3、创建指定多个文件组的数据库

View Code
 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 dbgroup1
26 (
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 dbgroup2
41 (
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 on
56 (
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',true
2 exec sp_renamedb,'test','测试'
3 exec sp_dboption,'test','single',false

3、使用add file 添加文件

1 alter database test
2 add file
3 (
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 test
2 go
3 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、利用文件组实现平衡负荷与并行访问(注意:文件组只能提高系统的性能而不能提高系统的稳定性) 

六、疑问

数据库快照提供了恢复数据库的一个手段,不过使用数据库快照的时候又有种种的限制,比如说使用数据库会造成源数据库的性能降低,那在实际的生产过程中恢复数据库的手段有哪些?请各位大牛指点。

posted @ 2012-05-16 17:25  programming lover  阅读(1238)  评论(0编辑  收藏  举报