寂寞部屋
- 关注互联网,关注生活
关注互联网,关注生活
2019年五月
« 4月    
 12345
6789101112
13141516171819
20212223242526
2728293031  
  • 日志总数:553 篇
  • 浏览总量:2,435,444 次
  • 运行天数:619 天
  • 建站时间:2017-9-14
  • 最后更新:2019-4-2

用c#备份和还原sql server 2000数据库

 

C#代码
  1. using System;   
  2. using System.Data;   
  3. using System.Data.SqlClient;   
  4.   
  5. namespace bachupsqlserver   
  6. {   
  7.     /// <summary>   
  8.     /// 备份和还原sql server 2000数据库,在asp.net中文正式版和sql server 2000系统上通过   
  9.     /// </summary>   
  10.     public class BackupData   
  11.     {   
  12.         private SqlConnection conn;   
  13.         public BackupData()   
  14.         {   
  15.             //   
  16.             // TODO: 在此处添加构造函数逻辑   
  17.             //   
  18.             string sql="data source=localhost;initial catalog=master;password=;persist security info=True;user id=sa;workstation id=TOPS03496;packet size=4096";//注意默认数据库不要和恢复的数据库同名   
  19.   
  20.             init(sql);   
  21.         }   
  22.   
  23.         /// <summary>   
  24.         /// 备份数据库   
  25.         /// </summary>   
  26.         /// <param name="databasename">要备份的数据源名称</param>   
  27.         /// <param name="backuptodatabase">备份到的数据库文件名称及路径</param>   
  28.         /// <returns></returns>   
  29.         public bool BackUpDataBase(string databasename,string backuptodatabase)   
  30.         {   
  31.             string procname;   
  32.             string name=databasename+DateTime.Now.Year.ToString()+DateTime.Now.Month.ToString()+DateTime.Now.Date.Day.ToString()+DateTime.Now.Minute.ToString();   
  33.             string sql;   
  34.   
  35.             conn.Open();        //打开数据库连接   
  36.   
  37.             //删除逻辑备份设备,但不会删掉备份的数据库文件   
  38.             procname="sp_dropdevice";   
  39.             SqlCommand sqlcmd1=new SqlCommand(procname,conn);   
  40.             sqlcmd1.CommandType =CommandType.StoredProcedure;   
  41.   
  42.             SqlParameter sqlpar=new SqlParameter();   
  43.             sqlpar=sqlcmd1.Parameters.Add("@logicalname",SqlDbType.VarChar,20);   
  44.             sqlpar.Direction =ParameterDirection.Input;   
  45.             sqlpar.Value =databasename;   
  46.   
  47.             try        //如果逻辑设备不存在,略去错误   
  48.             {   
  49.                 sqlcmd1.ExecuteNonQuery();   
  50.             }   
  51.             catch  
  52.             {   
  53.             }   
  54.   
  55.             //创建逻辑备份设备   
  56.             procname="sp_addumpdevice";   
  57.             SqlCommand sqlcmd2=new SqlCommand(procname,conn);   
  58.             sqlcmd2.CommandType =CommandType.StoredProcedure;   
  59.   
  60.             sqlpar=sqlcmd2.Parameters.Add("@devtype",SqlDbType.VarChar,20);   
  61.             sqlpar.Direction =ParameterDirection.Input;   
  62.             sqlpar.Value ="disk";   
  63.   
  64.                
  65.             sqlpar=sqlcmd2.Parameters.Add("@logicalname",SqlDbType.VarChar,20);//逻辑设备名   
  66.             sqlpar.Direction =ParameterDirection.Input;   
  67.             sqlpar.Value =databasename;   
  68.   
  69.             sqlpar=sqlcmd2.Parameters.Add("@physicalname",SqlDbType.NVarChar,260);//物理设备名   
  70.             sqlpar.Direction =ParameterDirection.Input;   
  71.             sqlpar.Value =backuptodatabase+name+".bak";   
  72.   
  73.                
  74.             try  
  75.             {   
  76.                 int i=sqlcmd2.ExecuteNonQuery();   
  77.             }   
  78.             catch(Exception err)   
  79.             {   
  80.                 string str=err.Message;   
  81.             }   
  82.   
  83.             //备份数据库到指定的数据库文件(完全备份)   
  84.             sql="BACKUP DATABASE "+databasename +" TO "+databasename +" WITH INIT";   
  85.             SqlCommand sqlcmd3=new SqlCommand(sql,conn);   
  86.             sqlcmd3.CommandType =CommandType.Text;   
  87.             try  
  88.             {   
  89.                 sqlcmd3.ExecuteNonQuery();   
  90.             }   
  91.             catch(Exception err)   
  92.             {   
  93.                 string str=err.Message ;   
  94.                 conn.Close();   
  95.   
  96.                 return false;   
  97.             }   
  98.   
  99.             conn.Close();//关闭数据库连接   
  100.             return true;   
  101.   
  102.         }   
  103.   
  104.         /// <summary>   
  105.         /// 还原指定的数据库文件   
  106.         /// </summary>   
  107.         /// <param name="databasename">要还原的数据库</param>   
  108.         /// <param name="databasefile">数据库备份文件及路径</param>   
  109.         /// <returns></returns>   
  110.         public bool RestoreDataBase(string databasename,string databasefile )   
  111.         {   
  112.   
  113.             //还原指定的数据库文件   
  114.             string sql="RESTORE DATABASE "+databasename +" from DISK = ‘"+databasefile +"’ ";   
  115.             SqlCommand sqlcmd=new SqlCommand(sql,conn);   
  116.             sqlcmd.CommandType =CommandType.Text;   
  117.   
  118.             conn.Open();   
  119.   
  120.             try  
  121.             {   
  122.                 sqlcmd.ExecuteNonQuery();   
  123.             }   
  124.             catch(Exception err)   
  125.             {   
  126.                 string str=err.Message ;   
  127.                 conn.Close();   
  128.   
  129.                 return false;   
  130.             }   
  131.   
  132.             conn.Close();//关闭数据库连接   
  133.             return true;   
  134.         }   
  135.   
  136.         /// <summary>   
  137.         /// 初始化数据库的连接   
  138.         /// </summary>   
  139.         /// <param name="strconn"></param>   
  140.         private void init(string strconn)   
  141.         {   
  142.             conn=new SqlConnection(strconn);   
  143.   
  144.         }   
  145.     }   
  146. }   
本站原创文章,请勿复制转载
版权声明:除特别注明外,本站所有文章均为原创,未经许可请勿复制、转载
2007-11-10
3,319 views
标签: , , ,
暂无评论

发表评论

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。