基于ASP.NET(C#)Web开发平台,对远程备份与恢复SQLServer数据库的方法
2008-10-29 09:26
796 查看
摘要:基于ASP.NET(C#)Web开发平台,对远程备份与恢复SQLServer数据库的方法进行了简单、详细地介绍;解决了基于WEB方式的远程数据库恢复中我们常常会遇到“因为数据库正在使用,所以未能获得对数据库的排它访问权,RESTORE DATABASE操作异常终止”等问题;高效地实现了远程数据库备份与恢复功能。 关键词:ASP.net;C#;远程备份与恢复;SQLServer数据库 中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)17-31410-02 Design and Implementation of the Long-distance Backup and Recovery SQLServer Database Based on ASP.net(C#) YIN Bang-zhi (Heyuan Vocational Technical School of GuangDong Prov.,Heyuan 517000,China) Abstract:Based on the ASP.NET(C#) Web development platform,it introduced the method of long-distance backup and recovery SQLServer database simply and detailedly; It solved the problem we met on the web when we are recovery long-distance database“Because while the database is being used,others can’t get the right to access it. RESTORE DATABASE operation will abnormally terminate”;It carried out backup and recovery function of the long-distance database efficiently. Key words:ASP.net;C#; Long-distance Backup and Recovery;SQLServer Database 1 引言 随着数据库管理技术的发展,为了避免由于意外而引发的数据丢失,常常需要对数据进行备份,以便日后能够对相关数据进行恢复,减少由于意外而造成的损失。T-SQL语言提供的BACKUP和RESTORE命令可以分别实现数据备份与恢复操作,但基于WEB方式的远程数据库恢复中我们常常会遇到“因为数据库正在使用,所以未能获得对数据库的排它访问权,RESTORE DATABASE操作异常终止”等问题。原因很简单,当用户与SQLServer数据库正在通信时,数据库系统具有排它访问性。下面基于ASP.NET(C#)Web开发平台,就远程备份与恢复SQLServer数据库进行了详细地设计与实现。 2 界面设计及控件说明 2.1 界面设计 界面设计如图1示: 图1 2.2 界面控件说明 界面控件说明如表1示: 表1 3 变量定义及本框内容为空的判断处理方法 3.1 定义变量 设数据库备份文件存放在Web服务器上的指定虚假路径下的DataBackup子目录下。我们可以使用ASP.net的Server对象的MapPath方法获得Web服务器上的指定虚假路径相对应的物理文件路径。 string ServerName = Txt_ServerName.Text.ToString(); string DBName = Txt_DBName.Text.ToString(); string UName = Txt_UserName.Text.ToString(); string UPassword = Txt_UserPasswrod.Text.ToString(); string DBBackupName = Server.MapPath("DataBackup//") + Txt_FileName Text.ToString(); 3.2 文本框内容为空的判断及处理方法 下面给出文本框Txt_ServerName内容为空的判断及处理方法,其余文本框内容为空的判断及处理方法类似。 if (Txt_ServerName.Text.Trim() == "") {ClientScript.RegisterClientScriptBlock(this.GetType(), "Error", "alert('服务器名或IP地址不能为空!')", true); return;} 3.3 建立并打开远程数据库连接 string ConnStrt = "Server='" + ServerName + "';Initial Catalog='" + DBName + "';uid='" + UName + "';pwd='" + UPassword + "';"; SqlConnection Conn = new SqlConnection(ConnStr); Conn.Open(); 4 远程数据库备份与恢复程序实现 4.1远程数据库备份 命令按钮Btn_DBackup 单击事件C#程序实现代码如下: protected void Btn_DBackup _Click(object sender, EventArgs e) {string BackupStr = "backup database " + DBName + " to disk='" + DBBackupName + "'"; try { if (File.Exists(DBBackupName)) { ClientScript.RegisterClientScriptBlock(this.GetType(), "Error", "alert('此文件已存在,请重新输入!')", true); return; } SqlCommand comm = new SqlCommand(BackupTxt, conn); comm.ExecuteNonQuery(); //执行远程数据库备份命令 ClientScript.RegisterClientScriptBlock(this.GetType(), "Error", "alert('数据库备份成功!')", true); } catch (Exception ms) { ClientScript.RegisterClientScriptBlock(this.GetType(), "Error", "alert('数据库备份失败!')", true); Response.Write(ms.Message); } 本文原文 finally { conn.Close(); //关闭远程数据库连接 }} 4.2 远程数据库恢复 我们可以采用以下步骤实现远程数据库恢复操作: (1)使远程数据库转入单用户模式,断开所有已连接数据库的用户的连接并回退它们的事务。 (2)使用T-SQL中的“restore”命令恢复远程数据库。 (3)使远程数据库转入多用户模式。 命令按钮Btn_ DRecovery单击事件C#程序实现代码如下: protected void Btn_DRecovery_Click(object sender, EventArgs e) { Btn_DRecovery.Attributes.Add("onclick", "return confirm('确认要恢复数据吗?')"); string RecoveryStr = "Alter DATABASE " + DBName + " set single_user with rollback immediate use master RESTORE DATABASE " + DBName + " from disk='" + DBBackupName + "'" ; SqlConnection conn = new SqlConnection(RecoveryStr); conn.Open(); try{ SqlCommand comm1 = new SqlCommand(RecoveryStr, conn); comm1.ExecuteNonQuery(); //执行远程数据库恢复命令 RecoveryStr = "Alter DATABASE " + DBName + " set multi_user"; SqlCommand comm2 = new SqlCommand(RecoveryStr, conn); comm2.ExecuteNonQuery(); //使远程数据库转入多用户模式 ClientScript.RegisterClientScriptBlock(this.GetType(), "Error", "alert('数据库还原成功!')", true);} catch (Exception ms){ ClientScript.RegisterClientScriptBlock(this.GetType(), "Error", "alert('数据库还原失败!')", true); Response.Write(ms.Message);} finally{ conn.Close();}} 5 程序运行及注意事项 程序运行如图2所示。 图2 注意事项如下: (1)在命名空间区域需要引用using System.Data.SqlClient命名空间。 (2)为了让SQL Server在断开用户的连接之前等待用户完成他们的事务,可以使用下面的命令格式: ALTER DATABASE 远程数据库名称 SET SINGLE_USER WITH ROLLBACK AFTER 时间(秒)SECONDS 即让SQL Server先等待(如30秒钟),然后断开所有的连接并回退它们的事务。 (3)在还原过程中,为了防止由于文件过大而不能完成还原操作,我们可以在Web.Config文件中配置允许的文件大小。如: httpRuntimemaxRequestLength="字节数"ExecutionTimeout="时间值(秒)" 6 结束语 实现数据库备份与恢复的方法有多种,在日常的SQLServer数据库管理中,我们常常直接打开SQLServer的企业管理器对数据库系统进行备份与恢复,但这只能在服务器上操作,不能远程执行。本文中所谈到的方法为远程数据库备份与恢复提供了一种方便、快捷、有效的途径。 参考文献: [1]张晓辉等.SQL Server 2000管理及应用系统开发[M].北京:人民邮电出版社.2003. [2]明日科技 张跃廷,等.ASP.NET数据库系统开发完全手册[M]. 北京:人民邮电出版社,2007. 注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文 |
相关文章推荐
- [导入]C# + ASP.NET开发基于Web的RSS阅读器
- C#+ASP.NET开发基于Web的RSS阅读器
- C#+ASP.NET开发基于Web的RSS阅读器
- C#+ASP.NET开发基于Web的RSS阅读器
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速Web开发框架设计
- C# + ASP.NET开发基于Web的RSS阅读器
- 【转】C#+ASP.NET开发基于Web的RSS阅读器
- cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(一)
- C#+ASP.NET开发基于Web的RSS阅读器
- cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(二)
- C#+ASP.NET开发基于Web的RSS阅读器
- C#+ASP.NET开发基于Web的RSS阅读器(转载)
- C#+ASP.NET开发基于Web的RSS阅读器
- [导入]C# + ASP.NET开发基于Web的RSS阅读器
- C#+ASP.NET开发基于Web的RSS阅读器
- [导入]C# + ASP.NET开发基于Web的RSS阅读器
- [导入]C# + ASP.NET开发基于Web的RSS阅读器
- C#+ASP.NET开发基于Web的RSS阅读器
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V1.8.1 [开源]