procedure TForm1.Button1Click(Sender: TObject);
var
    S:_SQLServer;
    //d:_backup;
begin
    s:=Cosqlserver.Create;
    //d:=Cobackup.Create;
    s.Connect('(local)','sa','');
    //backup1.ConnectTo(d);
    backup1.Database:='EIMS';
    backup1.Files:='c:\EIMS.bak';
    backup1.SQLBackup(s);
end;
为什么用backup执行不了备份,而用_backup就可以,哪位高人帮帮我,恢复也是一样

解决方案 »

  1.   

    给你介绍一种好的备份方法:
    -------------------------------数据备份----------------------------------------
    得到系统所有的备份设备:
        select * from master..sysdevices where cntrltype=2   
    得到指定的备份设备中的备份数据列表:
        RESTORE HEADERONLY from [设备名称变量] 
    取得服务器默认的备份路径:
        select * from  master..sysfiles
    添加新设备:
        EXEC sp_addumpdevice 'Disk', '新设备名称','备份路径加设备名称.dat'
    向设备添加备份数据:
        backup database 数据库名称 to [设备名称] with DESCRIPTION='备份信息',name='备份数据名称'    
    -------------------------------数据恢复----------------------------------------
    设置当前数据库
    USE MASTER
    调用存储过程,关闭其他用户连接
    exec master..killspid  数据库名称
    调用用户
    exec sp_dboption 数据库名称 ,'dbo use only','true'
    恢复数据
    Restore Database sbgl from [设备名称] with file=备份序号,REPLACE存储过程(关闭用户连接)
    create  proc  killspid  (@dbname  varchar(20))  
    as  
    begin  
    declare  @sql  nvarchar(500)  
    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  <  >-1  
    begin  
    exec('kill  '+@spid)  
    fetch  next  from  getspid  into  @spid  
    end  
    close  getspid  
    deallocate  getspid  
    end  GO