ASP.NET SQLServer2005 数据库备份与还原
2012-09-25 11:37
567 查看
using System; using System.Data.SqlClient; using System.Data; using System.IO; namespace NET.Common { /// <summary> /// 数据库操作帮助类 /// </summary> public class DatabaseHelper { private const string SQL_DATABASE_BACK = "BACKUP DATABASE {0} TO DISK = '{1}'"; //数据库备份语句 private const string SQL_DATABASE_RESTORE = "RESTORE DATABASE {0} FROM DISK = '{1}' WITH REPLACE"; //数据库还原语句 private const string SQL_SELECT_ALL_CONN = "SELECT spid FROM master..sysprocesses WHERE dbid=db_id('{0}')"; //获取指定数据库所有链接语句 /// <summary> /// 实例数据库操作 /// </summary> /// <param name="masterConnectionString">master数据库链接字符串</param> public DatabaseHelper(string masterConnectionString) { this.MasterConnectionString = masterConnectionString; } /// <summary> /// master数据库链接字符串 /// </summary> private string MasterConnectionString { get; set; } /// <summary> /// SQLServer数据库备份 /// </summary> /// <param name="connectionString">数据库连接字符串</param> /// <param name="backName">备份文件名称,不包含后缀名</param> /// <param name="path">备份文件存放的物理路径</param> public bool Back(string dbName, string backName, string path) { //判断存放备份文件的目录是否存在 if (!Directory.Exists(path)) { //不存在,新建目录 Directory.CreateDirectory(path); } try { using (SqlConnection conn = new SqlConnection(MasterConnectionString)) { //设置存放备份文件的完整物理路径 string backPath = path + "\\" + backName + ".bak"; //设置数据库备份的T-SQL语句 string t_sql_back = string.Format(SQL_DATABASE_BACK, dbName, backPath); using (SqlCommand cmd = new SqlCommand(t_sql_back, conn)) { cmd.CommandType = CommandType.Text; conn.Open(); //开始备份 cmd.ExecuteNonQuery(); return true; } } } catch { return false; } } /// <summary> /// SQLServer数据库还原 /// </summary> /// <param name="dbName">要进行还原的数据库名称</param> /// <param name="fullPath">备份文件的完整物理路径</param> public bool Restore(string dbName, string fullPath) { //判断还原使用的文件是否存在 if (!File.Exists(fullPath)) { return false; } try { using (SqlConnection conn = new SqlConnection(MasterConnectionString)) { //设置数据库还原的T-SQL语句 string t_sql_restore = string.Format(SQL_DATABASE_RESTORE, dbName, fullPath); //设置查询指定数据库的所有连接 string t_sql_select_all_conn = string.Format(SQL_SELECT_ALL_CONN, dbName); string t_sql_kill; conn.Open(); //获取指定数据库所有连接 SqlCommand cmd = new SqlCommand(t_sql_select_all_conn, conn); SqlDataAdapter reSDA = new SqlDataAdapter(cmd); DataTable dtConn = new DataTable(); reSDA.Fill(dtConn); //逐一删除连接 for (int i = 0; i < dtConn.Rows.Count; i++) { t_sql_kill = " kill " + dtConn.Rows[i][0].ToString(); cmd = new SqlCommand(t_sql_kill, conn); cmd.ExecuteNonQuery(); } //执行还原操作 cmd = new SqlCommand(t_sql_restore, conn); cmd.ExecuteNonQuery(); //清空当前连接池,这个很主要,如果不清空还原后第一次访问会出现“在向服务器发送请求时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)”错误 SqlConnection.ClearPool(conn); return true; } } catch { return false; } } } }
相关文章推荐
- ASP.NET中的数据库备份与还原
- 用SQLDMO在ASP.NET中备份和还原数据库(SQLSERVER2000)
- ASP.NET中使用代码来进行备份和还原数据库
- 数据库备份与还原(ASP.NET)
- asp.net实现数据库备份还原功能
- ASP.NET中使用代码来进行备份和还原数据库
- ASP.NET中使用代码来进行备份和还原数据库
- ASP.NET备份数据与还原数据,解决数据库正在使用的问题
- asp.net(C#) 数据库备份还原 源码
- [ASP.NET-V] SQL Server 2008数据库的备份与还原
- 【原创】ASP.NET C# 对SQL/ACCESS 数据库的备份和还原函数
- asp.net 数据库备份还原(sqlserver+access)
- Asp.net 不使用SQLDMO实现数据库备份和还原
- asp.net 数据库备份还原(sqlserver+access)
- Asp.Net 备份和还原SQL SERVER 数据库
- ASP.NET下备份与还原数据库代码
- Asp.net 不使用SQLDMO实现数据库备份和还原
- 在ASP.NET中备份数据库以及还原(不成熟)
- ASP.NET中使用代码来进行备份和还原数据库
- ASP.NET下备份与还原数据库代码