winform程序备份和还原数据库
小妹做了一个winform系统,需要对sql2000数据库备份和还原
备份的代码如下:
  /// <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;
         }
这样可以备份成功,生成文件BookLibrarySystem.bak
但是数据库还原的,我需要登录到我的系统后,点某个按钮还原,我搜了资料,说要杀死所有进程才能还原,但是我的系统已经链接到数据库了,这样就会报数据库被使用,不能杀死进程这种类似的错误,请各位路过的都来看一看,代码如下:
  /// <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");
             SqlCommand cmd = new SqlCommand("p_killspid", conn1);
             cmd.Parameters.Add(new SqlParameter("@dbname", "BookLibrarySystem"));
             try
 &nbs