日期:2014-05-18  浏览次数:20678 次

求助数据库备份的代码。
我想把SQL 数据库备份 起来。 
以便以后还原。 

请问 怎么用C#程序  
来备份 和 还原呢。 
  请大家多多指教 (要有具体代码 则更好!。) 
希望高手门 给予支持。


------解决方案--------------------
using System;
using System.Data;
using System.Data.SqlClient;
 
namespace bachupsqlserver
{
/// <summary>
/// 备份和还原sql server 2000数据库,在asp.net中文正式版和sql server 2000系统上通过
/// </summary>
public class BackupData
{
private SqlConnection conn;
public BackupData()
{
//
// TODO: 在此处添加构造函数逻辑
//
string sql="data source=localhost;initial catalog=master;password=;persist security info=True;user id=sa;workstation id=TOPS03496;packet size=4096";//注意默认数据库不要和恢复的数据库同名
 
init(sql);
}
 
/// <summary>
/// 备份数据库
/// </summary>
/// <param name="databasename">要备份的数据源名称</param>
/// <param name="backuptodatabase">备份到的数据库文件名称及路径</param>
/// <returns></returns>
public bool BackUpDataBase(string databasename,string backuptodatabase)
{
string procname;
string name=databasename+DateTime.Now.Year.ToString()+DateTime.Now.Month.ToString()+DateTime.Now.Date.Day.ToString()+DateTime.Now.Minute.ToString();
string sql;
 
conn.Open(); //打开数据库连接
 
//删除逻辑备份设备,但不会删掉备份的数据库文件
procname="sp_dropdevice";
SqlCommand sqlcmd1=new SqlCommand(procname,conn);
sqlcmd1.CommandType =CommandType.StoredProcedure;
 
SqlParameter sqlpar=new SqlParameter();
sqlpar=sqlcmd1.Parameters.Add("@logicalname",SqlDbType.VarChar,20);
sqlpar.Direction =ParameterDirection.Input;
sqlpar.Value =databasename;
 
try //如果逻辑设备不存在,略去错误
{
sqlcmd1.ExecuteNonQuery();
}
catch
{
}
 
//创建逻辑备份设备
procname="sp_addumpdevice";
SqlCommand sqlcmd2=new SqlCommand(procname,conn);
sqlcmd2.CommandType =CommandType.StoredProcedure;
 
sqlpar=sqlcmd2.Parameters.Add("@devtype",SqlDbType.VarChar,20);
sqlpar.Direction =ParameterDirection.Input;
sqlpar.Value ="disk";
 

sqlpar=sqlcmd2.Parameters.Add("@logicalname",SqlDbType.VarChar,20);//逻辑设备名
sqlpar.Direction =ParameterDirection.Input;
sqlpar.Value =databasename;
 
sqlpar=sqlcmd2.Parameters.Add("@physicalname"