本文原文 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="时间值(秒)"
数据库还原
最新推荐文章于 2020-09-28 19:15:22 发布