本人在是用Adoconnect连接了SQL Server数据库打开之后再断开,但是不管在Delphi中还原数据库还是直接在SQL Server中还原数据库都提示‘数据库正在使用,所以未能获得对数据库的排它访问权’而操作失败,可是我明明关闭了连接,是不是Delphi没有真正的关闭连接呢?

解决方案 »

  1.   

    试试
    ADOConn.close;
    ADOConn.ConnectionString:='';
      

  2.   

    呵呵  在Delphi中还原数据库的问题是这样的要把你当前连接的数据库先切换到别的库上,我是换到master库,然后执行你还原数据库的代码就可以了,执行完毕后,再切换回原来的库
      

  3.   

    snowtiger2000说得有道理,可能是delphi为了提高再次连接时的速度而做的手脚。
      

  4.   

    adoConnect.Close;
    然后一切OK!
      

  5.   

    你也可以这样:
    adoConnect.Close;
    adoConnect.Destroy;
    adoConnect.Create(Self);
    ...
    adoConnect.connectionstring='';
    ...
    adoConnect.Open;
    ...
    一切OK!
      

  6.   

    可以用两个连接adoconnetion 一个连接master数据库库,一个连接你的业务数据库还原数据库时把连接业务数据库的adoconnection.connected:=false;
      

  7.   

    没错,还原时最好先切换到别的数据库。如master
      

  8.   

    adoConnect:=TADOConnection.Create(Self);
      adoConnect.LoginPrompt:=False;
      adoConnect.ConnectionString:='Provider=MSDASQL.1;'
                                  +'Password=aaaaaa;'
                                  +'Persist Security Info=True;'
                                  +'User ID=lc0019999;'
                                  +'Data Source=SybCS';
      adoConnect.Open;
      adoConnect.Close;
      adoConnect.ConnectionString:='Provider=MSDASQL.1;'
                                  +'Password=password;'
                                  +'Persist Security Info=True;'
                                  +'User ID=lc0019999;'
                                  +'Data Source=cwbase2';
      adoConnect.Open;
      adoConnect.Close;
      adoConnect.ConnectionString:='Provider=MSDASQL.1;'
                                  +'Password=aaaaaa;'
                                  +'Persist Security Info=True;'
                                  +'User ID=lc0019999;'
                                  +'Data Source=SybCS';
      adoConnect.Open;
    我用这个简单的例子执行了好几次,也没发现你说的问题。
      

  9.   

    adoConnect.Close;
    adoConnect.Destroy;
    ADOConn.ConnectionString:='';
    如果不行就用多几个
      

  10.   

    不太可能吧
    adoconnect.close()
    最多
    adoconnect.connectionstring:='';
    我想已经足够了如果你是自己动态create的,那么做绝点把他做了,看他还、、、、