数据库备份还原类:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;//应用相应的命名空间using System.Windows.Forms;using System.Collections;using System.IO;using System.Data;using System.Data.SqlClient;namespace canyinxt.Command{ public static class BacupDatabase { static string connectionString = "Data Source=(local);Initial Catalog=master;integrated security = true"; static SqlConnection conn = new SqlConnection(connectionString); #region 备份指定的数据库文件 /// <summary> /// 备份指定的数据库文件 /// </summary> /// <param name="DBName">备份名称要与数据库中的数据库名称相同</param> /// <param name="databasename">要还原的数据库(包含要备份的文件名)</param> /// <returns></returns> public static bool BackUpDataBase(string DBName, string databasefile) { if (!File.Exists(databasefile)) { } //还原的数据库MyDataBase string sql = "BACKUP DATABASE " + "" + DBName + "" + " TO DISK = ‘" + databasefile + ".bak‘ "; conn.Open(); SqlCommand comm = new SqlCommand(sql, conn); comm.CommandType = CommandType.Text; try { comm.ExecuteNonQuery(); } catch (Exception err) { string str = err.Message; conn.Close(); return false; } conn.Close();//关闭数据库连接 return true; } #endregion //以下是还原数据库,稍微麻烦些,要关闭所有与当前数据库相连的连接 #region 还原数据库 /// <summary> /// 还原数据库 /// </summary> /// <param name="DBName">要还原数据库名称(此名称要和备份时候的相同)</param> /// <param name="backfile">数据库文件路径(加名称)</param> /// <returns></returns> public static bool RestoreDatabase(string DBName, string backfile) { ///杀死原来所有的数据库连接进程 SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=(local);Initial Catalog=master;integrated security = true"; conn.Open(); string sql = "SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name=‘" + "" + DBName + "" + "‘"; SqlCommand cmd1 = new SqlCommand(sql, conn); SqlDataReader dr; ArrayList list = new ArrayList(); try { dr = cmd1.ExecuteReader(); while (dr.Read()) { list.Add(dr.GetInt16(0)); } dr.Close(); } catch (SqlException eee) { MessageBox.Show(eee.ToString()); } finally { conn.Close(); } //MessageBox.Show(list.Count.ToString()); for (int i = 0; i < list.Count; i++) { conn.Open(); cmd1 = new SqlCommand(string.Format("KILL {0}", list[i].ToString()), conn); cmd1.ExecuteNonQuery(); conn.Close(); // MessageBox.Show("系统已经清除的数据库线程: " + list[i].ToString() + "正在还原数据库!"); } MessageBox.Show("系统已经清除的数据库线程: " + list.Count.ToString() + "正在还原数据库!"); //这里一定要是master数据库,而不能是要还原的数据库,因为这样便变成了有其它进程 //占用了数据库。 string constr = @"Data Source=(local);Initial Catalog=master;integrated security = true"; string database = DBName; string path = backfile; string BACKUP = String.Format("RESTORE DATABASE {0} FROM DISK = ‘{1}‘ WITH REPLACE", database, path); SqlConnection con = new SqlConnection(constr); SqlCommand cmd = new SqlCommand(BACKUP, con); con.Open(); try { cmd.ExecuteNonQuery(); MessageBox.Show("还原成功,点击退出系统,请重新登录!"); Application.Exit(); return true; } catch (SqlException ee) { //throw(ee); //MessageBox.Show("还原失败"); MessageBox.Show(ee.ToString() + "还原失败!", "还原失败!"); return false; } finally { con.Close(); } } #endregion }}
备份方法的使用:
调用 Command 文件夹下的 BacupDatabase 类下的 BackUpDataBase(备份方法):
Command.BacupDatabase.BackUpDataBase("DB_CYMS", BackupPath + @"DB_CYMS")
还原方法的使用:
调用 Command 文件夹下的 BacupDatabase 类下的 RestoreDatabase(还原方法):
Command.BacupDatabase.RestoreDatabase("DB_CYMS", RestoreDB)
参考:http://www.cnblogs.com/enjoyprogram/p/3177693.html
MSSQL、C# 、Winform、ASP.NET - 数据库备份与还原模块
标签:
小编还为您整理了以下内容,可能对您也有帮助:
MSSQL数据库备份和还原的几种方法图文教程一、通过企业管理器进行单个数据库备份。打开SQL SERVER 企业管理器,展开SQL SERVER组LOCAL下的数据库,右键点击你要备份的数据库,在弹出的菜单中选择所有任务下的备份数据库,弹出备份数据库对话框:
点击添加按钮,填写备份文件的路径和文件名,点击确定添加备份文件,点击备份对话框上的备份,开始进行备份。
二、通过企业管理器多数据定时库备份。打开SQL SERVER 企业管理器,展开SQL SERVER组下的管理节点,右键单击数据库维护计划,选择新建维护计划。在弹出的欢迎对话框中选择下一步,然后显示如下对话框:
选择你想要备份的数据库,下一步。在接下来的一步中,我们默认所有选项,下一步。在当前对话框中可以选择是否检查数据库的完整性,这里我们默认就可以进行下一步就行了。对话框入图所示:
选中作为维护计划的一部分来备份数据库,点击更改按钮修改备份数据库的时间,单击下一步,入下图:
在这里,我们可以选择“使用此目录”为备份指定路径,选中“删除早于此时间的文件”可以指定备份文件的保留时间。
下面的几个步骤我们都选择默认设置,最后在完成对话框里为备份起一个名字,点击完成后,数据库会在你指定的时间进行备份。关于数据库维护计划的更多知识请查看其它相关资料。
三、备份数据库文件。打开SQL SERVER 企业管理器,展开SQL SERVER组LOCAL下的数据库,右键点击你要备份的数据库,选择属性。在弹出的对话框中选择数据文件,在这里显示了数据文件的路径,如下图:
打开SQL SERVER 服务管理器,将SQL SERVER 停止。然后打开我的电脑,找到数据文件路径,将其拷贝出来进行备份(注意同时备份.LDF文件)。
最后开启SQL SERVER服务
四、回复数据库备份文件(适用于用企业管理器备份的数据库)。打开SQL SERVER 企业管理器,展开SQL SERVER组LOCAL下的数据库,右键点击你要还原的数据库,选择所有任务下的还原数据库,弹出如下对话框:
选择从设备,点击选择设备,为还原添加备份文件路径,然后进行确定还原。
五、还原数据库备份文件。在企业管理器中对数据库节点右键单击,选择所有任务下的附加数据库,弹出附加数据库对话框。如下图:
选择一个你之前拷贝的数据文件,然后点击确定即可附加成功(注:如果数据库已经存在,请删除数据库后在对其进行附加)。您可能感兴趣的文章:sqlserver备份还原数据库功能封装分享SQLSERVER数据库备份后无法还原的解决办法简化SQL Server备份与还原到云工作原理及操作方法MySQL数据库备份和还原的常用命令小结解决SQL2005备份数据库.dat或bak还原时的结构错误的解决方法sql server 2005数据库备份还原图文教程通过c# winform程序如何对数据库进行备份和还原?
WinForm c# 备份 还原 数据库, 其实是个非常简单的问题,一个Form,一个Button,一个OpenFileDialog,一个SaveFileDialog.下面给出备份与还原类
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Collections;
using System.Windows.Forms;
namespace 我的备份与还原
{
class 备份与还原数据库
{
static string connectionString = "server=.;database=master;uid=sa;pwd=";
SqlConnection conn = new SqlConnection(connectionString);
/// <summary>
/// 备份指定的数据库文件
/// </summary>
/// <param name="databasename">要还原的数据库</param>
/// <returns></returns>
public bool BackUpDataBase( string databasefile)
{
if (!File.Exists(databasefile))
{
}
//还原的数据库MyDataBase
string sql = "BACKUP DATABASE " + "MyDataBase" + " TO DISK = '" + databasefile + ".bak' ";
conn.Open();
SqlCommand comm = new SqlCommand(sql, conn);
comm.CommandType = CommandType.Text;
try
{
comm.ExecuteNonQuery();
}
catch (Exception err)
{
string str = err.Message;
conn.Close();
return false;
}
conn.Close();//关闭数据库连接
return true;
}
//以下是还原数据库,稍微麻烦些,要关闭所有与当前数据库相连的连接
//------------------------------------------------------------------------------------------
public string RestoreDatabase(string backfile)
{
///杀死原来所有的数据库连接进程
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=.;Initial Catalog=master;User ID=sa;pwd =";
conn.Open();
string sql = "SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='" +
"MyDataBase"+ "'";
SqlCommand cmd1 = new SqlCommand(sql, conn);
SqlDataReader dr;
ArrayList list = new ArrayList();
try
{
dr = cmd1.ExecuteReader();
while (dr.Read())
{
list.Add(dr.GetInt16(0));
}
dr.Close();
}
catch (SqlException eee)
{
MessageBox.Show(eee.ToString());
}
finally
{
conn.Close();
}
for (int i = 0; i < list.Count; i++)
{
conn.Open();
cmd1 = new SqlCommand(string.Format("KILL {0}", list[i].ToString()), conn);
cmd1.ExecuteNonQuery();
conn.Close();
MessageBox.Show("系统已经清除的数据库线程: " + list[i].ToString() + "\r\n正在还原数据库!");
}
//这里一定要是master数据库,而不能是要还原的数据库,因为这样便变成了有其它进程
//占用了数据库。
string constr = @"Data Source=.;Initial Catalog=master;User ID=sa;pwd =";
string database = MyDataBase;
string path = backfile;
string BACKUP = String.Format("RESTORE DATABASE {0} FROM DISK = '{1}'", database, path);
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand(BACKUP, con);
con.Open();
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("还原成功,点击退出系统!");
Application.Exit();
}
catch (SqlException ee)
{
//throw(ee);
//MessageBox.Show("还原失败");
MessageBox.Show(ee.ToString());
}
finally
{
con.Close();
}
return "成功与否字符串";
}
}
}
通过c# winform程序如何对数据库进行备份和还原?
一个简单的办法,备份就是将数据库表中的数据通过程序导出成固定格式的文件,最简单的就是EXCEL,还原就是将数据库表清空,然后将备份的文件里面的数据写入数据库表中。