博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server2008 学习笔记(三) 数据库管理
阅读量:4980 次
发布时间:2019-06-12

本文共 4656 字,大约阅读时间需要 15 分钟。

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

一、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_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、创建指定多个文件组的数据库

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

六、疑问

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

转载于:https://www.cnblogs.com/ljgstudy/archive/2012/05/16/2504358.html

你可能感兴趣的文章
ASP.net:保护你的DLL和Code不被别人使用
查看>>
WPF下实现listview大图标效果
查看>>
CF219C hoosing Capital for Treeland
查看>>
Java中static成员变量、成员变量、static代码块、代码块、构造方法的执行顺序
查看>>
JVM内存占用情况深入分析
查看>>
C语言不透明结构体实现
查看>>
cognos安装教程
查看>>
POJ1611
查看>>
个人书单
查看>>
MySql下载地址
查看>>
springmvc学习笔记---idea创建springmvc项目
查看>>
SQL Server 大数据量插入和索引关系
查看>>
无旋Treap - BZOJ1014火星人 & 可持久化版文艺平衡树
查看>>
【微信小游戏实战】零基础制作《欢乐停车场》一、游戏设计
查看>>
【uoj#315/bzoj4943】[NOI2017]蚯蚓排队 Hash
查看>>
Docker容器部署tomcat出现中文乱码
查看>>
vue项目安装
查看>>
Validtion
查看>>
C++的发展方向是对的嘛?
查看>>
一个程序员的爱情宣言--程序员的情书
查看>>