数 据 库 原 理 及应 用 课 程设 计 报 告
图 4.11 图书信息查询表单
图 4.12 罚单表单
图 4.12 罚单查询表单
第 15 页
数 据 库 原 理 及应 用 课 程设 计 报 告
5 备份和还原数据库
备份和还原数据库可以保证数据的安全性,也可以保证数据的不丢失, 保证系统的稳定性。备份和还原数据库是所有数据库应用系统必备的功能。 备份和还原是数据库管理员维护数据库安全性和完整性的重要操作。备份 是还原受损数据库最容易,把意外损失降到最小的保障方法。没有备份, 所有的数据都可能丢失。备份可以防止因表或数据库遭受破坏、介质失效 或用户错误而造成的数据灾难。还原数据库是在意外发生后,利用备份来 还原数据库的造作。
5.1 规划数据库的备份和还原
在规划数据库的备份和还原时,必须结合两者一起考虑。一般说来, 用户设计的操作方案将受到数据库运行的实际情况和可利用的数据库备份 资源的限制。但是,无论如何数据库的价值将是放在第一位考虑的因素, 根据数据的价值,用户可以预测自己所能承受的数据损失,从而选择合适 的还原方案,并根据还原方案设计出合理的备份方案。
一般说来,规划数据库备份应该按照先面的步骤进行: (1) 预测自己的数据库系统所可能遇到的数据库意外事故。 (2) 针对不同的意外事故一一设计对应的还原方案。 (3) 支队所有的还原方案设计可行的备份方案。
(4) 在一定备份资源和时间限制内对设计的方案进行测试。
5.2 数据库的备份
5.2.1 备份概述
备份就是制作数据库结构和数据的拷贝,这是保障数据库系统安全的 基础性工作。用户使用数据库是因为要利用数据库来管理和操作数据,数 据对于用户来说是非常宝贵的资产。数据是存放在计算机上的,但是即使 是最可靠的硬件或软件,也会出现系统故障和产品故障。所以,应该在意 外发生之前做好充分的准备工作,以便在意外发生之后有相应的措施能快 速地还原数据库的运行,并使丢失的数据量减到最小。
可能造成数据损失的因素很多,如:误执行了删除造作、破坏性病毒、 自然灾害、硬件系统或软件系统故障、盗窃等。
第 16 页
数 据 库 原 理 及应 用 课 程设 计 报 告
5.2.2 数据库备份设备类型
数据库备份设备类型包括磁盘备份设备、磁带本分设备、命令管道设 备备份[10] 。
磁盘备份设备
磁盘备份设备一般是硬盘或其他磁盘类存储介质上的文件,一般按照 普通的操作系统文件进行管理。磁盘备份设备可以定义在数据库服务器的 本地磁盘上,也可以定义在通过网络连接的远程磁盘上。
磁带设备备份
磁带设备与磁盘设备的使用方式一样,但有两点区别:
磁带设备必须直接物理连接在运行 SQL Server 服务器的计算机上; 磁带设备不支持远程设备备份。 命名管道设备
命名管道设备为使用第三方的备份软件和设备提供了一个灵活、强大 的通道。当用户使用命名管道设备进行备份和还原的操作时,需要在 BACKUP 或 RESTORE 语句中给出客户端应用程序中使用的命名管道的名字。 5.2.3 数据库的备份
有的系统要求用户使用 SQL Server 2000 的工具进行数据的备份和还 [11]原,这就要求用户熟悉 SQL Server 2000 数据库的基本使用方法 。本系
统利用另一种方法,在应用系统中实现数据的备份和还原。
在程序中备份数据库,要使用 BACKUP DATABASE 命令,格式如下: BACKUP DATABASE<数据库名>TO disk=<备份文件名> 在类 CADOConn 中添加一个函数 Backup(),代码如下:
void ADOConn::Backup() {
//连接数据库
OnInitADOConn();
_bstr_t vSQL; vSQL
=
\
database
Stock
to
disk=
'C:\\\\BackUp\\\\Stock.bak'\
第 17 页
数 据 库 原 理 及应 用 课 程设 计 报 告 ExecuteSQL(vSQL); //关闭数据库
ExitConnect(); }
在主界面中单击菜单项“备份数据库”,将执行 OnBackup()函数,代 码如下:
void CStockDlg::OnBackup() {
// TODO: Add your command handler code here ADOConn m_AdoConn; m_AdoConn.Backup(); MessageBox(\备份完成\
}
如果备份成功,系统将提示用户备份成功。
5.3 还原数据库
当系统数据库出现数据事故时,就需要还原数据库中的数据,把损失 降到最小。这对企业和用户来说非常重要。还原数据库可以最大限度的减 少用户的经济损失和数据损失。
在程序中还原数据库,需要使用 RESTORE DATABASE 命令,格式如下:
RESTORE DATABASE<数据库名>FROM disk=<备份文件名> 在类 CADOConn 中添加一个函数 Restore(),代码如下:
void ADOConn::Restore() {
// @@@@ 创建到 Master 数据库的连接
try {
// 创建 Connection 对象
m_pConnection.CreateInstance(\ // 设置连接字符串,必须是 BSTR 型或者_bstr_t 类型
第 18 页
数 据 库 原 理 及应 用 课 程设 计 报 告
_bstr_t strConnect = \
Server=ntserver;Database=master; uid=sa; pwd=sa;\
m_pConnection->Open(strConnect,\ }
// 捕捉异常
catch(_com_error e) {
// 显示错误信息
AfxMessageBox(e.Description()); }
_bstr_t vSQL; vSQL
=
\
database
Stock
from
disk=
'C:\\\\BackUp\\\\Stock.bak'\
m_pConnection->Execute(vSQL,NULL,adCmdText); }
在主界面中单击菜单项“还原数据库”,将执行 OnBackup()函数,代 码如下:
void CStockDlg::OnRestore() {
// TODO: Add your command handler code here ADOConn m_AdoConn; m_AdoConn.Restore(); MessageBox(\还原完成\
}
如果用户还原完成,系统将自动弹出对话框提示用户还原完成。
第 19 页