C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)

本文主要是介绍C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. C#实现SQLSERVER2000数据库备份还原的两种方法
  2. :方法一(不使用SQLDMO):
  3. ///
  4. ///备份方法
  5. ///
  6. SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;");
  7. SqlCommandcmdBK=newSqlCommand();
  8. cmdBK.CommandType=CommandType.Text;
  9. cmdBK.Connection=conn;
  10. cmdBK.CommandText=@"backupdatabasetesttodisk='C:/ba'withinit";
  11. try
  12. {
  13. conn.Open();
  14. cmdBK.ExecuteNonQuery();
  15. MessageBox.Show("Backupsuccessed.");
  16. }
  17. catch(Exceptionex)
  18. {
  19. MessageBox.Show(ex.Message);
  20. }
  21. finally
  22. {
  23. conn.Close();
  24. conn.Dispose();
  25. }
  26. ///
  27. ///还原方法
  28. ///
  29. SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;Trusted_Connection=False");
  30. conn.Open();
  31. //KILLDataBaseProcess
  32. SqlCommandcmd=newSqlCommand("SELECTspidFROMsysprocesses,sysdatabasesWHEREsysprocesses.dbid=sysdatabases.dbidANDsysdatabases.Name='test'",conn);
  33. SqlDataReaderdr;
  34. dr=cmd.ExecuteReader();
  35. ArrayListlist=newArrayList();
  36. while(dr.Read())
  37. {
  38. list.Add(dr.GetInt16(0));
  39. }
  40. dr.Close();
  41. for(inti=0;i<list.Count;i++)
  42. {
  43. cmd=newSqlCommand(string.Format("KILL{0}",list),conn);
  44. cmd.ExecuteNonQuery();
  45. }
  46. SqlCommandcmdRT=newSqlCommand();
  47. cmdRT.CommandType=CommandType.Text;
  48. cmdRT.Connection=conn;
  49. cmdRT.CommandText=@"restoredatabasetestfromdisk='C:/ba'";
  50. try
  51. {
  52. cmdRT.ExecuteNonQuery();
  53. MessageBox.Show("Restoresuccessed.");
  54. }
  55. catch(Exceptionex)
  56. {
  57. MessageBox.Show(ex.Message);
  58. }
  59. finally
  60. {
  61. conn.Close();
  62. }
  63. 方法二(使用SQLDMO):
  64. ///
  65. ///备份方法
  66. ///
  67. SQLDMO.Backupbackup=newSQLDMO.BackupClass();
  68. SQLDMO.SQLServerserver=newSQLDMO.SQLServerClass();
  69. //显示进度条
  70. SQLDMO.BackupSink_PercentCompleteEventHandlerprogress=newSQLDMO.BackupSink_PercentCompleteEventHandler(Step);
  71. backup.PercentComplete+=progress;
  72. try
  73. {
  74. server.LoginSecure=false;
  75. server.Connect(".","sa","sa");
  76. backup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
  77. backup.Database="test";
  78. backup.Files=@"D:/test/myProg/backupTest";
  79. backup.BackupSetName="test";
  80. backup.BackupSetDescription="Backupthedatabaseoftest";
  81. backup.Initialize=true;
  82. backup.SQLBackup(server);
  83. MessageBox.Show("Backupsuccessed.");
  84. }
  85. catch(Exceptionex)
  86. {
  87. MessageBox.Show(ex.Message);
  88. }
  89. finally
  90. {
  91. server.DisConnect();
  92. }
  93. this.pbDB.Value=0;
  94. ///
  95. ///还原方法
  96. ///
  97. SQLDMO.Restorerestore=newSQLDMO.RestoreClass();
  98. SQLDMO.SQLServerserver=newSQLDMO.SQLServerClass();
  99. //显示进度条
  100. SQLDMO.RestoreSink_PercentCompleteEventHandlerprogress=newSQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
  101. restore.PercentComplete+=progress;
  102. //KILLDataBaseProcess
  103. SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;Trusted_Connection=False");
  104. conn.Open();
  105. SqlCommandcmd=newSqlCommand("SELECTspidFROMsysprocesses,sysdatabasesWHEREsysprocesses.dbid=sysdatabases.dbidANDsysdatabases.Name='test'",conn);
  106. SqlDataReaderdr;
  107. dr=cmd.ExecuteReader();
  108. ArrayListlist=newArrayList();
  109. while(dr.Read())
  110. {
  111. list.Add(dr.GetInt16(0));
  112. }
  113. dr.Close();
  114. for(inti=0;i<list.Count;i++)
  115. {
  116. cmd=newSqlCommand(string.Format("KILL{0}",list),conn);
  117. cmd.ExecuteNonQuery();
  118. }
  119. conn.Close();
  120. try
  121. {
  122. server.LoginSecure=false;
  123. server.Connect(".","sa","sa");
  124. restore.Action=SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
  125. restore.Database="test";
  126. restore.Files=@"D:/test/myProg/backupTest";
  127. restore.FileNumber=1;
  128. restore.ReplaceDatabase=true;
  129. restore.SQLRestore(server);
  130. MessageBox.Show("Restoresuccessed.");
  131. }
  132. catch(Exceptionex)
  133. {
  134. MessageBox.Show(ex.Message);
  135. }
  136. finally
  137. {
  138. server.DisConnect();
  139. }
  140. this.pbDB.Value=0;

这篇关于C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/472887

相关文章

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、