在做数据库的备份和恢复的时候,碰到了一个非常奇怪的问题,用restore database恢复数据库,在sqlserver里面数据怎么没有恢复啊!
代码如下:  Data.ADOC.Connected := False;//断开旧的连接;
  ADOQNewReSume.Connected := True;//新的连接
  ADOQReSume.Close;               //ADOQReSume连接的是ADOQNewReSume
  ADOQReSume.SQL.Clear;
  ADOQReSume.SQL.Text := 'use master restore database jxc From disk=''C:\备份文件-0606140048.bak''';
  ADOQReSume.ExecSQL;可为什么恢复后,查看sqlserver里面的数据却根本就没有恢复,而我如果把use master restore database jxc From disk='C:\备份文件-0606140048.bak'到查询分析里面执行者一切正常,到底是什么问题啊!搞了一个晚上了,实在是奇怪!大家帮帮忙!想想问题到底是出在那,在次谢谢了!

解决方案 »

  1.   

    Data.ADOC.Connected := False;//断开旧的连接;
     // ADOQNewReSume.Connected := True;//新的连接
      adOQRESUME.OPEN:
      ADOQReSume.Close;               //ADOQReSume连接的是ADOQNewReSume
      ADOQReSume.SQL.Clear;
      //ADOQReSume.SQL.Text := 'use master restore database jxc From disk=''C:\备份文件-0606140048.bak''';
      ADOQRESUME.SQL.ADD('use master restore database jxc From disk=''C:\备份文件-0606140048.bak''');
    //在这里加一句输出SQL
      SHowMessage(ADOQRESUME.SQL.TEXT);
      ADOQReSume.ExecSQL;
      

  2.   

    ADOQReSume.SQL.Text := 'use master restore database jxc From disk='+''''+'C:\备份文件-0606140048.bak'+''''+';
      

  3.   

    ADOQReSume.SQL.Text := 'use master restore database jxc From disk='''+'C:\备份文件-0606140048.bak'+'''';
      

  4.   

    我用C#做过数据恢复,思路是
    首先连接的是Master数据库
    把当前要恢复的数据库的所有连接都断掉
    然后运行恢复数据库语句
    断掉所有连接的SQl语句为
    private string GetDisConnectSql(string DataBaseName)
    {
    string Sql="";
    Sql+=" declare  @sql  nvarchar(500)  ";
    Sql+=" declare  @spid  int  ";
    Sql+=" set  @sql='declare  getspid  cursor  for    ";
    Sql+=" select  spid  from  sysprocesses  where  dbid=db_id(''"+DataBaseName+"'')'  ";
    Sql+=" exec  (@sql)  ";
    Sql+=" open  getspid  ";
    Sql+=" fetch  next  from  getspid  into  @spid  ";
    Sql+=" while  @@fetch_status  <  >-1  ";
    Sql+=" begin  ";
    Sql+=" exec('kill  '+@spid)  ";
    Sql+=" fetch  next  from  getspid  into  @spid  ";
    Sql+=" end  ";
    Sql+=" close  getspid  ";
    Sql+=" deallocate  getspid  ; ";
    return Sql;
    }
      

  5.   

    to:lihao_ningxia,huluobowangmeng,yinweixian谢谢了,都试过了,不知道为什么不行!可明明输出的sql语句拿到查询分析器里面执行就OK!实在奇怪!到底问题出在那里啊!