C#备份和还原sql server数据库

View Code
  1 using System;
  2 using System.Data;
  3 using System.Data.SqlClient; 
  4 
  5 namespace Commom
  6 {
  7     /// <summary>    
  8     /// 备份和还原sql server 2005数据库,在.net2.0中文正式版和sql server 2005系统上通过    
  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=11;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 }
147 
148 --转自csdn某位高人

 

 

转载于:https://www.cnblogs.com/comcyd/archive/2012/04/19/2456435.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值