C# 数据库备份与还原 小妹做了一个winform系统,需要对sql2000数据库备份和还原(小妹妹你太狠了)
2013-09-26 16:31
169 查看
成功了,把代码帖出来给 大家看看,跟我刚开始帖出来的差不多,是需要杀掉进程的,我之前调用的存储过程,可能有点问题,现在改成sql了 /// <summary> /// 数据库备份 /// </summary> public static int DbBackup(string serverip, string username, string psw, string path) { int ret; SQLDMO.Backup oBackup = new SQLDMO.BackupClass(); SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass(); try { oSQLServer.LoginSecure = false; oSQLServer.Connect(serverip, username, psw); oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database; oBackup.Database = "BookLibrarySystem"; oBackup.Files = path + "\\BookLibrarySystem.bak"; ; oBackup.BackupSetName = "BookLibrarySystem"; oBackup.BackupSetDescription = "数据库备份"; oBackup.Initialize = true; oBackup.SQLBackup(oSQLServer); ret = 1; } catch { ret = 0; throw; } finally { oSQLServer.DisConnect(); } return ret; } /// <summary> /// 数据库恢复 /// </summary> public static int DbRestore(string serverip, string username, string psw, string path) { int ret; SQLDMO.Restore oRestore = new SQLDMO.RestoreClass(); SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass(); try { exepro(serverip, username, psw); oSQLServer.LoginSecure = false; oSQLServer.Connect(serverip, username, psw); oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database; oRestore.Database = "BookLibrarySystem"; oRestore.Files = path + "\\BookLibrarySystem.bak"; oRestore.FileNumber = 1; oRestore.ReplaceDatabase = true; oRestore.SQLRestore(oSQLServer); ret = 1; } catch { ret = 0; throw; } finally { oSQLServer.DisConnect(); } return ret; } /**/ /// <summary> /// 杀死当前库的所有进程 /// </summary> /// <returns></returns> private static bool exepro(string serverip, string username, string psw) { SqlConnection conn1 = new SqlConnection("server=" + serverip + ";uid=" + username + ";pwd=" + psw + ";database=master"); string cmdTxt = "use master;"; cmdTxt += " declare @sql nvarchar(500) declare @spid int set @sql='declare getspid cursor for "; cmdTxt += " select spid from sysprocesses where dbid=db_id('''+@dbname+''')' exec (@sql) "; cmdTxt += " open getspid fetch next from getspid into @spid while @@fetch_status <>-1 begin "; cmdTxt += " exec('kill '+@spid) fetch next from getspid into @spid end close getspid deallocate getspid "; //SqlCommand cmd = new SqlCommand("p_killspid", conn1); SqlCommand cmd = new SqlCommand(cmdTxt, conn1); cmd.Parameters.Add(new SqlParameter("@dbname", "BookLibrarySystem")); cmd.CommandType = CommandType.Text; try { conn1.Open(); SqlDataReader dr = cmd.ExecuteReader(); ArrayList list = new ArrayList(); while (dr.Read()) { list.Add(dr.GetInt16(0)); } dr.Close(); for (int i = 0; i < list.Count; i++) { cmd = new SqlCommand(string.Format("KILL {0}", list), conn1); cmd.ExecuteNonQuery(); } conn1.Close(); return true; } catch (Exception ex) { return false; } finally { conn1.Close(); } } |
相关文章推荐
- 如何实现从WinForm中打开一个需要身份验证的Web系统?
- 炎炎夏日需要一个清凉的地 - 自制水冷系统(十一 程序开发)
- java+mysql开发的系统,在系统中数据库备份还原的思路与实现
- 网上别人整理的【最牛B的 Linux Shell 命令】,备份一个,需要的可以拿走!
- linux下利用ruby做系统备份与还原
- Win8.1系统的备份还原功能
- dd 详解及系统备份还原转移方案
- LSTM模型在问答系统中的应用 2017-06-27 21:03 在问答系统的应用中,用户输入一个问题,系统需要根据问题去寻找最合适的答案。 1:采用句子相似度的方式。根据问题的字面相似度选择相似度最
- Ubuntu Linux备份系统并还原到另一块硬盘上(硬盘大小均可不一致)
- 使用GHOST备份和还原系统
- 请画出一个抓虫系统的架构图并说明你的爬虫需要如何优化来提升性能
- Win10系统的SurfacePro4如何重装系统-4 如何再次备份和还原系统
- Ubuntu下系统备份和还原,从此告别重装系统
- 完全兼容Win7的双硬盘多系统备份还原超级工具-Acronis True Image Home 2010
- 支持备份/还原win10系统的分区工具DiskGenius v4.9.3专业版下载+序列号注册文件激活教程
- Clonezilla(再升龙)系统备份还原使用
- 学习 系统备份和还原 !
- 写一个MyList<T>的类,内部用T[]实现(不能使用系统的List<T>类),需要实现的接口如下:
- 项目需要,最近在着手开发的一个网站队列处理系统的一个网络模块
- centos7系统备份与还原