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;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值