SQL Server2008数据库的维护 (第四部分)

时间:2024-04-07 10:53:21

4.1脱机与联机数据库

Online: 可以对数据库进行访问

Offline: 数据库无法使用

查看数据库状态的方法:

1)使用查询语句查询

SELECT state_desc FROM sys.databases WHERE NAME = 'E_Market'

2)使用DATABASEPROPERTYEX(database, property)函数

SELECT DATABASEPROPERTYEX('E_Market', 'status')

脱机:断开数据库与所有人的连接;数据库名在数据库节点中存在;不能执行任何有效的数据库操作

SQL Server2008数据库的维护 (第四部分)

注意:如果需要拷贝mdf或者ndf文件,只有在数据库脱机的状态下才可以

联机:数据库处在可操作,可查询的状态(不能对数据库文件进行迁移和复制)

SQL Server2008数据库的维护 (第四部分)

4.1.1使用数据库联机文档

连接上数据库如下

SQL Server2008数据库的维护 (第四部分)

按F1键打开联机文档->点击索引->然后再查找框里输入需要寻找的字段,如”数据库状态

SQL Server2008数据库的维护 (第四部分)

4.2分离与附加数据库

分离与附加数据库的方式

4.2.1在视图下分离与附件数据库

附加时选择添加时,只选择主数据文件.mdf即可

SQL Server2008数据库的维护 (第四部分)

4.2.2使用存储过程分离与附加数据库

分离数据库: EXEC [email protected] = E_Market

附加数据库: EXEC [email protected] = E_Market, @filename1 = ‘E:\Project\E_Market_data.mdf’, @filename2 = ‘E:\Project\E_Market_log.ldf’

4.2.3脱机与分离数据库的异同点

不同点:

脱机:与数据库服务断开连接,但在数据库节点上还存在脱机的数据库名称

分离:将数据库从服务器上分离出去,数据库不存在,只存在对应的数据文件和日志文件

相同点:

都可以对数据库文件进行赋值等操作

4.3收缩数据库

收缩数据库:删除数据库的每个文件中已经分配但还没有使用的页;收缩后数据库空间自动减少

收缩方式:自动收缩数据库;手动收缩数据库

自动收缩

SQL Server每半个小时检查一次文件使用情况,如果空闲空间大于25%,那么就会自动收缩,防止数据库有过多的空间而不使用

SQL Server2008数据库的维护 (第四部分)

手动收缩

1)收缩数据库

执行完后记得刷新数据库

SQL Server2008数据库的维护 (第四部分)

SQL Server2008数据库的维护 (第四部分)

2)收缩文件

SQL Server2008数据库的维护 (第四部分)

SQL Server2008数据库的维护 (第四部分)

4.4数据库的备份与还原(完整备份与还原)

SQL Server提供四种数据库备份方式

1)完整备份:备份整个数据库的所有内容包括事务日志

2)差异备份:只备份上次完整备份后更改的数据部分

3)事务日志备份:只备份事务日志里的内容

4)文件或文件组备份:只备份文件或文件组中的某些文件

在数据库完整备份期间,SQL Server做一下工作

1)备份数据及数据库中所有表的结构和相关的文件结构

2)备份在备份期间发生的所有活动

3)备份在事务日志中未确认的事务

4.4.1数据库完整备份

备份数据库所有对象,缺点是时间较长,备份的文件较大

SQL Server2008数据库的维护 (第四部分)

SQL Server2008数据库的维护 (第四部分)

SQL Server2008数据库的维护 (第四部分)

SQL Server2008数据库的维护 (第四部分)

4.4.2数据库还原

首先删除E_Market数据库

数据库文件也一并被删除

SQL Server2008数据库的维护 (第四部分)

还原E_Market: 使用完整备份的E_Market.bak文件

SQL Server2008数据库的维护 (第四部分)

SQL Server2008数据库的维护 (第四部分)

SQL Server2008数据库的维护 (第四部分)

SQL Server2008数据库的维护 (第四部分)

4.5数据库的备份与还原(差异备份与还原)

差异备份:是完整备份的补充;备份上次完整备份以来的数据变动的部分。

SQL Server2008数据库的维护 (第四部分)

5:00中执行完整备份1,6点钟执行差异备份1,7点钟执行差异备份2。如果要恢复数据库在7:00的状态,则首先需要恢复完整备份1,接着恢复差异备份2,即可恢复数据库至7:00状态

差异备份如下图:

SQL Server2008数据库的维护 (第四部分)

如果还原数据库:还原完整备份数据库没有问题,但是还原差异备份数据库时报如下错误:

无法还原日志备份或差异备份,因为没有文件可用于前滚

解决办法:首先删掉刚才还原的数据库(完整备份还原)

接着再次执行完整备份还原,注意勾选如下选项:

SQL Server2008数据库的维护 (第四部分)

接着再还原差异备份数据库就不会报错了。