您的当前位置:首页正文

MSSQL、C# 、Winform、ASP.NET - 数据库备份与还原模块

2023-11-09 来源:画鸵萌宠网

数据库备份还原类:

 

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,还原就是将数据库表清空,然后将备份的文件里面的数据写入数据库表中。

Top