一般恢复数据库是在另外一个数据库的下面写一个存储过程,可不可以在Delphi在直接恢复呀

解决方案 »

  1.   

    可以啊,执行sql语句,就是了嘛 一样的哈!
      

  2.   

    对SQL 数据库
    var
      Str: string;
    begin
      DataModule2.ADOConnection1.Connected := false;
      ADOConn.Connected := False;
      ADOConn.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=SAILOR';
      ADOConn.Open;
      if edit1.Text <> '' then
      begin
        Str := 'restore database test from disk = '+ #39 + edit1.Text + #39 + ' with replace, '
           + 'move ' + #39 + 'test_data' + #39 + ' to ' + #39 + 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Data.MDF' + #39
           + ',move ' + #39 + 'test_log' + #39 + ' to ' + #39 + 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' + #39;
        with Adoquery1 do
        begin
          close;
          sql.Clear;
          sql.Add('ALTER DATABASE test SET OFFLINE WITH ROLLBACK IMMEDIATE');
          try
            ExecSQL;
          except      end;
          close;
          sql.Clear;
          sql.Text := Str;
          try
            execsql;
            application.MessageBox('成功','asdf',mb_ok+ mb_iconinformation);
          except
            application.MessageBox('错误','asdf',mb_ok+ mb_iconstop);
          end;
          close;
          sql.Clear;
          sql.Add('ALTER DATABASE test SET ONLINE WITH ROLLBACK IMMEDIATE');
          try
            ExecSQL;
          except      end;
        end;
      end;
      ADOConn.Connected := false;
      DataModule2.ADOConnection1.Connected := True;
      

  3.   

    我以前回复的贴!
    http://community.csdn.net/Expert/topic/2628/2628239.xml?temp=.343075
      

  4.   

    http://community.csdn.net/Expert/topic/3199/3199625.xml?temp=.6634333
      

  5.   

    下面是Sql Server的备份恢复。使用Sql语句。
    // 备份。使用AdoConnection连接你的数据库,adoquery链这个AdoConnection。
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     AdoQuery1.SQL.Text := 'backup database testDFW to disk = ' + '''' + 'e:\backup.dat' + '''';
     showmessage(AdoQuery1.SQL.Text);
     AdoQuery1.ExecSQL;
    end;
    //恢复。 AdoConnection不要连接你的数据库,可以连接一个其他数据库,如Master。
    procedure TForm1.Button2Click(Sender: TObject);
    begin
     AdoQuery1.SQL.Text := 'restore database testDFW from disk =' + '''' + 'e:\backup.dat'  + '''';
     showmessage(AdoQuery1.SQL.Text);
     AdoQuery1.ExecSQL;
    end;
      

  6.   

    楼上的,数据库有用户活动连接的时候即使你use master也不能直接restore,要把用户进程kill掉