ASP.net(C#)远程备份与恢复SQLServer数据库的设计与实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:yedayong0007
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:基于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格式阅读原文。
其他文献
摘要:数字水印是数字作品版权保护的重要技术手段,不可察觉性和鲁棒性是图象水印中基本要求,但它们却是一对互相制约的因素。该算法提出了一种新的数字水印嵌入和提取方法,以一幅图象作为水印,信息量大,优于通常把文本,字符作为水印的方法;分块随机嵌入提高了水印嵌入的顽健性;根据图象局部特征确定水印的嵌入强度,使水印的嵌入强度随图象局部特征变化而变化。针对典型攻击的实验结果表明该算法具有很好的鲁棒性。  关键
期刊
摘要:本文主要阐述如何使用虚拟机软件VMware workstation来构建网络环境,实现网络监视器的实验教学。  关键词:网路监视器;教学实验;帧  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)17-31469-01  Using Virtual Ware VMware Workstation to Achieve Experimentation Teachi
期刊
摘要:该文通过介绍PowerPoint视频控件的使用方法,总结了常见视频媒体在PowerPoint中的运用技巧,对读者提高该软件的使用技能有着积极的意义。  关键词:PowerPoint;控件;视频媒体  中图分类号:G434 文献标识码:B文章编号:1009-3044(2007)17-31441-02  How to Employ "Video Control" in PowerPoint So
期刊
摘要:首先阐述了在实践教学中采用Proteus软件仿真的优势,然后对Proteus软件进行介绍,最后举例说明。  关键词:软件仿真的优势;Proteus软件;实例  中图分类号:TP319文献标识码:A文章编号:1009-3044(2007)17-31477-02  The Application of Proteus in Embedded System Teaching  REN Qin, C
期刊
摘要:本论文主要比较了两种多用户上行链路同步估计算法—时域同步与频域同步的性能;最后提出一种新的频率补偿算法使剩余频率快速降到±0.25子载波间距左右,使得频偏估计更具鲁棒性,并说明了算法仿真的有效性。  关键词:多用户OFDM;时域;频域  中图分类号:TN919文献标识码:A文章编号:1009-3044(2007)17-31386-04  Simple Analysis on Multiuse
期刊
摘要:压力测试是Web应用程序测试必不可少的一项工作。现以一个用ASP.NET开发的信息管理系统为例,详细论述如何使用ACT对Web应用程序进行压力测试。  关键词:Web应用程序;压力测试;ACT  中图分类号:TP306文献标识码:A文章编号:1009-3044(2007)17-31405-02  Briefing on Stress Testing of Web Application Pr
期刊
摘要:FLASH设计是目前设计业界界中使用比较广泛的一种形式,本文将着重介绍FLASH设计的现状,并对其发展前景进行详细的分析。  关键词:FLASH;动画;前景  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)17-31475-02  FLASH Design of the Status and Outlook  LI Qiao-jun,TAO Lin  (Hena
期刊
摘要:随着高等教育改革的进一步深化,许多课程的理论教学学时都不同程度地压缩了。如何在有限的学时内让学生掌握所学知识,是每个教师所面临的新问题。论文主要介绍了在数字电子技术课程的课堂教学中,引入MAX+plusⅡ软件,利用其方便、强大的仿真功能,帮助学生理解课程中的难点和重点,从而提高课堂教学的效率。  关键词:MAX+plusⅡ;数字电子技术;课堂教学  中图分类号:TP311文献标识码:A 文章
期刊
摘要:在C语言中,函数是实现程序模块化设计思想的手段。函数在调用过程中常常存在着实参和形参之间的数据传递。文章阐述了调用函数的过程中实参和形参之间数据传递的实质和属性,即值传递和单向性。  关键词:函数;形参;实参;数据传递  中图分类号:TP312文献标识码:A 文章编号:1009-3044(2007)17-31457-01  Analysis of Data Transferring from
期刊
摘要:VB是高校计算机基础课程之一,适合各种管理信息系统的开发。本文主要对VB基础教学中建构主义思想的运用进行了研究,并分析设计了VB教学过程中的教学方法。  关键词:VB;基础教学;建构主义  中图分类号:G642文献标识码:A 文章编号:1009-3044(2007)17-31455-02  Research of VB Teaching Based on Constructivism  GA
期刊