www.pudn.com > MainPrj_CarShop.rar > DBBackAndStore.cs
using System;
using System.Data;
using System.Data.SqlClient;
namespace MainPrj_CarShop
{
///
/// 备份和还原sql数据库
///
public class BackupDataAndStore
{
private SqlConnection conn;
public BackupDataAndStore()
{
//
// TODO: 在此处添加构造函数逻辑
//
string sql="server=.;uid=sa;pwd=;persist security info=False;database=master";
conn=new SqlConnection(sql);
}
///
/// 备份数据库
///
///
///
///
public bool BackUpDataBase(string databasename,string backuptodatabase)
{
string procname;
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(SqlException ex)
{
throw ex;
}
catch(Exception ex)
{
throw ex;
}
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",SqlDbType.NVarChar,260);
sqlpar.Direction =ParameterDirection.Input;
sqlpar.Value =backuptodatabase+".bak";
try
{
int i=sqlcmd2.ExecuteNonQuery();
}
catch(SqlException ex)
{
throw ex;
}
catch(Exception ex)
{
throw ex;
}
sql="BACKUP DATABASE "+databasename +" TO "+databasename +" WITH INIT";
SqlCommand sqlcmd3=new SqlCommand(sql,conn);
sqlcmd3.CommandType =CommandType.Text;
try
{
sqlcmd3.ExecuteNonQuery();
}
catch(SqlException ex)
{
throw ex;
}
catch(Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
conn.Close();
return true;
}
///
/// 还原指定的数据库文件
///
///
///
///
public bool RestoreDataBase(string databasename,string databasefile )
{
string sql="RESTORE DATABASE "+databasename +" from DISK = '"+databasefile +"' ";
SqlCommand sqlcmd=new SqlCommand(sql,conn);
sqlcmd.CommandType =CommandType.Text;
conn.Open();
try
{
sqlcmd.ExecuteNonQuery();
}
catch(SqlException ex)
{
if(conn.State==ConnectionState.Closed)
{
conn.Open();
sqlcmd.ExecuteNonQuery();
return true;
}
else
throw ex;
}
catch(Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
return true;
}
}
}