`

C# SQLSERVER2008数据库备份和还原的两种方法 (有进度条)

 
阅读更多

C# SQLSERVER2008数据库备份和还原的两种方法 (有进度条)

  1. :方法一(不使用SQLDMO):

  2.  

  3. ///

  4. ///备份方法

  5. ///

  6. SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;");

  7.  

  8. SqlCommandcmdBK=newSqlCommand();

  9. cmdBK.CommandType=CommandType.Text;

  10. cmdBK.Connection=conn;

  11. cmdBK.CommandText=@"backupdatabasetesttodisk='C:/ba'withinit";

  12.  

  13. try

  14. {

  15. conn.Open();

  16. cmdBK.ExecuteNonQuery();

  17. MessageBox.Show("Backupsuccessed.");

  18. }

  19. catch(Exceptionex)

  20. {

  21. MessageBox.Show(ex.Message);

  22. }

  23. finally

  24. {

  25. conn.Close();

  26. conn.Dispose();

  27. }

  28.  

  29.  

  30. ///

  31. ///还原方法

  32. ///

  33. SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;Trusted_Connection=False");

  34. conn.Open();

  35.  

  36. //KILLDataBaseProcess

  37. SqlCommandcmd=newSqlCommand("SELECTspidFROMsysprocesses,sysdatabasesWHEREsysprocesses.dbid=sysdatabases.dbidANDsysdatabases.Name='test'",conn);

  38. SqlDataReaderdr;

  39. dr=cmd.ExecuteReader();

  40. ArrayListlist=newArrayList();

  41. while(dr.Read())

  42. {

  43. list.Add(dr.GetInt16(0));

  44. }

  45. dr.Close();

  46. for(inti=0;i<list.Count;i++)

  47. {

  48. cmd=newSqlCommand(string.Format("KILL{0}",list),conn);

  49. cmd.ExecuteNonQuery();

  50. }

  51.  

  52. SqlCommandcmdRT=newSqlCommand();

  53. cmdRT.CommandType=CommandType.Text;

  54. cmdRT.Connection=conn;

  55. cmdRT.CommandText=@"restoredatabasetestfromdisk='C:/ba'";

  56.  

  57. try

  58. {

  59. cmdRT.ExecuteNonQuery();

  60. MessageBox.Show("Restoresuccessed.");

  61. }

  62. catch(Exceptionex)

  63. {

  64. MessageBox.Show(ex.Message);

  65. }

  66. finally

  67. {

  68. conn.Close();

  69. }

 

 

  1. 方法二(使用SQLDMO):

  2.  

  3. ///

  4. ///备份方法

  5. ///

  6. SQLDMO.Backupbackup=newSQLDMO.BackupClass();

  7. SQLDMO.SQLServerserver=newSQLDMO.SQLServerClass();

  8. //显示进度条

  9. SQLDMO.BackupSink_PercentCompleteEventHandlerprogress=newSQLDMO.BackupSink_PercentCompleteEventHandler(Step);

  10. backup.PercentComplete+=progress;

  11.  

  12. try

  13. {

  14. server.LoginSecure=false;

  15. server.Connect(".","sa","sa");

  16. backup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;

  17. backup.Database="test";

  18. backup.Files=@"D:/test/myProg/backupTest";

  19. backup.BackupSetName="test";

  20. backup.BackupSetDescription="Backupthedatabaseoftest";

  21. backup.Initialize=true;

  22. backup.SQLBackup(server);

  23. MessageBox.Show("Backupsuccessed.");

  24. }

  25. catch(Exceptionex)

  26. {

  27. MessageBox.Show(ex.Message);

  28. }

  29. finally

  30. {

  31. server.DisConnect();

  32. }

  33. this.pbDB.Value=0;

  34.  

  35.  

  36. ///

  37. ///还原方法

  38. ///

  39. SQLDMO.Restorerestore=newSQLDMO.RestoreClass();

  40. SQLDMO.SQLServerserver=newSQLDMO.SQLServerClass();

  41. //显示进度条

  42. SQLDMO.RestoreSink_PercentCompleteEventHandlerprogress=newSQLDMO.RestoreSink_PercentCompleteEventHandler(Step);

  43. restore.PercentComplete+=progress;

  44.  

  45. //KILLDataBaseProcess

  46. SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;Trusted_Connection=False");

  47. conn.Open();

  48. SqlCommandcmd=newSqlCommand("SELECTspidFROMsysprocesses,sysdatabasesWHEREsysprocesses.dbid=sysdatabases.dbidANDsysdatabases.Name='test'",conn);

  49. SqlDataReaderdr;

  50. dr=cmd.ExecuteReader();

  51. ArrayListlist=newArrayList();

  52. while(dr.Read())

  53. {

  54. list.Add(dr.GetInt16(0));

  55. }

  56. dr.Close();

  57. for(inti=0;i<list.Count;i++)

  58. {

  59. cmd=newSqlCommand(string.Format("KILL{0}",list),conn);

  60. cmd.ExecuteNonQuery();

  61. }

  62. conn.Close();

  63.  

  64. try

  65. {

  66. server.LoginSecure=false;

  67. server.Connect(".","sa","sa");

  68. restore.Action=SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;

  69. restore.Database="test";

  70. restore.Files=@"D:/test/myProg/backupTest";

  71. restore.FileNumber=1;

  72. restore.ReplaceDatabase=true;

  73. restore.SQLRestore(server);

  74. MessageBox.Show("Restoresuccessed.");

  75. }

  76. catch(Exceptionex)

  77. {

  78. MessageBox.Show(ex.Message);

  79. }

  80. finally

  81. {

  82. server.DisConnect();

  83. }

  84. this.pbDB.Value=0; 

分享到:
评论

相关推荐

    C#实现数据库备份与还原(两种方法)

    用C#写的实现数据库备份与还原的工程(VS2008下可直接运行,低于08的版本可以拷贝代码实现,记得要在COM中添加SQLSMO引用,本例数据库为SuperMarket,请更改为你所需备份的数据库),个人特意将两种方法放在同一工程...

    C#实现数据库前台备份还原代码,只有备份和还原两个功能

    总的来说,理解C#中如何利用SMO进行数据库备份和还原,以及在Web环境中如何实现这些操作,是提升开发技能的重要一步。这个过程涉及到数据库连接、SQL命令构造、异常处理和用户交互等多个方面,是.NET开发者必备的...

    数据备份还原,全部使用代码搞定

    这个库包含了与MySQL服务器交互所需的类和方法,其中包括了用于备份和还原的API。 接下来,我们将重点讨论如何使用SQL.DLL进行数据备份。MySQL提供了`mysqldump`命令行工具,可以生成SQL脚本来创建数据库的结构和...

    C#.net_经典编程例子400个

    329 实例238 列出系统中的打印机 330 7.12 其他 332 实例239 两种信息发送方式 332 实例240 功能快捷键 336 第8章 注册表 339 8.1 操作注册表 340 实例241 怎样存取注册表信息 ...

    C#程序开发范例宝典(第2版).part02

    精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...

    C#程序开发范例宝典(第2版).part08

    精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...

    C#程序开发范例宝典(第2版).part12

    精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...

    C#编程经验技巧宝典

    C#编程经验技巧宝典源代码,目录如下: 第1章 开发环境 1 &lt;br&gt;1.1 Visual Studio开发环境安装与配置 2 &lt;br&gt;0001 安装Visual Studio 2005开发环境须知 2 &lt;br&gt;0002 配置合适的Visual Studio 2005...

    C#程序开发范例宝典(第2版).part13

    精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...

    vc++ 开发实例源码包

    聊天系统,操作了数据库,有服务端和客户端。 ini文件的类适合VC使用 如题。 Inline Hook(ring3) 简单源码 代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数...

Global site tag (gtag.js) - Google Analytics