delphi6+ado+adaptive server anywhere7
我在程序中要用copyfileto做个备份,可总是提示错误
以下是示例
  adoconnection.close;//此步操作后数据库引擎并未关闭
  copyfiletto(.....)//如何使这一步成功执行?
另:谁有lookup字段的最优解决办法,我的程序前段时间可以,现在不可以了
  现在必须要为lookup字段赋值,以前不用,但也有lookup字段

解决方案 »

  1.   

    在Master数据库中建如下存储过程:
    Create Procedure 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
    endGO
    在恢复数据库之前先执行此存储过程,像这样:Use Master
    Go
    exec killspid 'mydb'
    Go
    restore database mydb from disk='c:\mydb.bak'在Delphi中直接用ExecSQL先后执行以上SQL语句即可
    刚刚学的,呵呵!
      

  2.   

    adoconnection.connected := false;
      

  3.   

    adoconnection.connected:=false;adoconnection.connectionString:=''
      

  4.   

    adoconnection.close;
    adoconnection.connected := false;
    adoconnection.Connectionstring:='';
      

  5.   

    to lincanwen(Too Two To) 
       看清我的是什么库!
      to  all
      我都试过,不行啊
      

  6.   

    兄弟
    我曾告诉过你我不清楚这个问题
    因为有些数据库是对ADO支持的不太好
    断不开的 SQLSERVER也一样
    解决的办法呢就是不使用adoconnection
    而直接用connectstring字符串在ADOQUERY上连接
    我没怎么用过lookup字段的
    说不上
      

  7.   

    adoconnection.close;
    adoconnection.connected := false;
    adoconnection.Connectionstring:='';
      

  8.   

    备份直接这样做也可以 :
    backup database name to disk='d:\aa.bak'恢复 :
    use Master 
    restore database name from disk='d:\aa.bak'
      

  9.   

    抱歉:) ,没有看清你的库:)  直接用 ADOQuery
      ConnectionString := '' ; 或者在需要断开 ADOConnection 时,将它链接到另外的库上 ,不知道这时文件是不是还在使用状态 ? 
      

  10.   

    copyfiletto当然不行啦,数据库都在使用怎么可以
    用backup吧
      

  11.   

    呵呵,以前用ASA做过,要把ASA的服务挂断才能copyfiletto,
    copy完再把服务叫起,再adoconnection.connected := True;
    不然就向 gzllich(刚从泥坑里出来) 说的,库用着不能copy的
      

  12.   

    to siyu2002(阿土仔) 
      用什么方法挂断
    adoconnection.close;
    adoconnection.connected := false;
    adoconnection.Connectionstring:='';
    这些我试了都不行
      

  13.   

    s := 'STOP  ENGINE ' + servername + ' UNCONDITIONALLY';
                adoconnection.connected := false;
                winexec('dbisql.exe -q ' + s);
      

  14.   

    siyu2002(阿土仔) ,你这个狗头,怎么才来??
      

  15.   

    mrfanghansheng(***木鱼***) 受不了你了~~~~~不要说脏话,我从来不说脏话!!~~~~~~
      

  16.   

    to  siyu2002(阿土仔)
      s := 'STOP  ENGINE ' + servername + ' UNCONDITIONALLY';
    stop放在dbisql中报错,根本执行不了
     stop engine ys UNCONDITIONALLY
    错误在ys处,ys已启动了
      

  17.   

    STOP  ENGINE语句在ASA6中是绝对没有问题的。我们已经过好多次测试
    ASA7我们没用过,你的库文件名是ys.db吗?试着查一下帮助,看看ASA7挂断服务的命令
      

  18.   

    to  blueshu(绝对是菜鸟):
      已给你发过短消息了,还不行我就无能为力了,手上没有ASA7没法试,
    请谅解
      

  19.   

    现在我发现可能是ado的连接池(可能是这么叫的)的原因,即断开后要有一断时间ado才能断开。