SQL Server 数据库还原
---恢复内容开始--- 对于一个优秀的应用程序来说,具有数据恢复功能尤为重要。因为数据恢复功能可以在数据找到破坏时,将数据恢复到系统中,保证系统重新正常运转,从而避免因数据找到异常丢失所带来的损失。本实例将演示怎样在C#中还原数据库。 还原数据库
---恢复内容开始---
对于一个优秀的应用程序来说,具有数据恢复功能尤为重要。因为数据恢复功能可以在数据找到破坏时,将数据恢复到系统中,保证系统重新正常运转,从而避免因数据找到异常丢失所带来的损失。本实例将演示怎样在C#中还原数据库。
还原数据库是使用数据库的备份文件对数据库进行还原操作。由于病毒的破坏、磁盘损坏或操作失误等原因会导致数据丢失、不完整或数据错误,此时,需要对数据库进行还原,将数据还原到某一天,前提是必须存在数据备份。
SQL Server数据库恢复支持4种类型,分别应用于不同的场合,下面进行简要介绍。
(1)还原整个数据库的完整数据库还原。
(2)完整数据库还原和差异数据库还原。通过使用RESTORE DATABASE语句还原差异备份。
(3)事务日志还原。
(4)个别文件和文件组还原。文件和文件组的还原既可以通过文件或文件组备份操作完成,也可以通过完整数据库备份操作完成。在还原文件或文件组时,必须应用事务日志。此外,文件差异备份可以在完成完整文件还原后还原。
注意:还原数据库备份将重新创建数据库和备份完成时数据库中存在的所有相关文件。但是,自创建备份文件后所做的任何数据库修改丢将丢失。若要还原创建数据库备份后所发生的事务,免备案空间,必须使用事务日志备份或差异备份。
本实例运用SQLDMO.Restore对象还原使用BACKUP命令所做的整个数据库备份。
RESTORE的语法格式如下:
} ] [WITH [RESTRICTED_USER{file_number|@file_number}] PASSWORD={password|@password_variable}] MEDIANAME={media_name|@media_name_variable}] MEDIAPASSWORD={mediapassword|@mediapassword_variable}] MOVE ] KEEP_REPLICATION] {NORECOVERY|RECOVERY|STANDBY=undo_file_name}] {NOREWIND|REWIND}] {NOUNLOAD|UNLOAD}] ] RESTART] STATS] ]
还原数据库参数及说明如下:
还原数据库参数及说明参 数 说 明
DATABASE 指定从备份还原整个数据库。如果指定了文件盒文件组列表,美国服务器,则只还原那些文件和文件组
{database_name|@database_name_var} 是将日志或整个数据库还原到的数据库。如果将其作为变量(@database_name_var)提供,则可将该名称指定为字符串常量(@database_name_var=database name)或字符串数据类型(ntext或text数据类型除外)的变量
FROM
指定从中还原备份的备份设备。如果没有指定FROM子句,则不会发生备份还原,香港服务器租用,而是恢复数据库。可用省略FROM子句的办法尝试恢复通过NORECOVERY选项还原的数据库,或切换到一台备用服务器上。如果省略FROM子句,则必须指定
NORECOVERY、RECOVERY或STANDBY
指定备份操作时要使用的逻辑或物理备份设备。可以是下列一种或多种形式。
{'logical_bakcup_device_name'|@logical_backup_device_name_var}:是由sp_addumpdevice创建的备份设备(数据库将从该备份设备还原)的逻辑名称,该名称必须符合标识符规则。如果作为变量(@logical_backup_device_name_var)
提供,则可以指定字符串常量(@logical_backup_device_name_var=logical_backup_device_name)或字符串数据类型(ntext或text数据类型除外)的变量作为备份设备名。
{DISK|TYPE}='physical_backup_device_name' @physical_backup_device_name_var:允许从命名磁盘或磁带设备还原备份。磁盘或磁带的设备类型应该用设备的真实名称(如完整的路径和文件名)来指定:DISK='C:\Program Files\Microsoft
SQL Server\MSSQL\BACKUP\Mybackup.dat' 或TYPE='\\.\TAPE0'。如果指定为变量(@physical_backup_device_name_var),则设备名称可以是字符串常量(@physical_backup_device_name_var = 'physical_backup_device_name')或字符
串数据类型(ntext或text数据类型除外)的变量
本实例主要应用还原数据库的代码如下:
+ dbname + + path +;
程序主要代码如下:
Frm_Main.cs:
View Code
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Text; 7 using System.Windows.Forms; 8 using System.Linq; 9 using System.Data.SqlClient; RevertDataBase 13 { Frm_Main : Form 15 { 16 public Frm_Main() 17 { 18 InitializeComponent(); 19 } Form1_Load(object sender, EventArgs e) 22 { )) 25 { SqlDataAdapter da = , con); .cbox_DataBase.DataSource = dt.DefaultView;.cbox_DataBase.DisplayMember = ;.cbox_DataBase.ValueMember = ; } 34 } button2_Click(object sender, EventArgs e) 37 { 38 if (this.openFileDialog1.ShowDialog() == DialogResult.OK) 39 { } 42 } button1_Click(object sender, EventArgs e) 45 { } Restore() 50 { dbname = SqlStr1 = + ; + dbname + + path + ; { { cmd.Connection = con;cmd.ExecuteNonQuery();MessageBox.Show(); } 67 catch (Exception ex) 68 { ); 71 } { } 76 } 77 } 78 } 79 }
Frm_Main.designer.cs: