我想在前端用代码实现数据库的备份和恢复功能,备份的我已经搞定了,但是在写恢复代码的时候总是报错:数据库正在使用不能恢复,我用的是restore database 请问有谁写过恢复数据库的代码?请教一下应该如何处理这个问题?

解决方案 »

  1.   

    with adoquery1 do
    begin
        Try
          Close;
          SQL.Clear;
          sql.Add('restore database ' + dbname + ' from disk =' + #39 + ExtractFilePath(paramstr(0)) + 'file\zip.fst' + #39 + ' with replace');
          ExecSQL;
          Messagebox(handle, '数据库恢复成功!', '提示:', MB_OK + MB_ICONINFORMATION);
        Except
          Messagebox(handle, '数据库恢复失败!', '提示:', MB_OK + MB_ICONWARNING);
          Raise;
        End;
    end;
    结贴吧楼主
      

  2.   

    数据库正在使用不能恢复1:你的连接不能直接打开该数据库,建议打开master数据库
    2:要将其它打开该数据库的进程kill掉
    3: 如下 kill use  master 
    go
    create  proc  killspid  (@dbname  varchar(20))  
    as  
    begin  
    declare  @sql  nvarchar(500),@temp varchar(1000)
    declare  @spid  int  
    set  @sql='declare  getspid  cursor  for    
    select  spid  from  sysprocesses  where  dbid=db_id('''+@dbname+''')'  
    exec  (@sql)  
    open  getspid  
    fetch  next  from  getspid  into  @spid  
    while  @@fetch_status =0
    begin  
      set @temp='kill  '+rtrim(@spid)
      exec(@temp)
    fetch  next  from  getspid  into  @spid  
    end  
    close  getspid  
    deallocate  getspid  
    end  --用法  
    use  master  
    exec  killspid  '数据库名'
      

  3.   

    'file\zip.fst' 是你的备份文件名
    ExtractFilePath(paramstr(0))是你的备份文件名的存放路径