数据库我是用SQL SERVER构建的,在DELPHI中用ADO实现连接,请问如何实现备份与恢复备份!现问一个:
我现在是在开发机上可以实现程序的调节用,可到了别的机子上就不能使用了,请问这是什么原因呢?
而且怪的是我能使用我拷过去的,而他们本身不能使用,请问要如保解决这个问题??

解决方案 »

  1.   

    1.路径是否一样?是否已经建了一样的库?
    sql比较搞笑就是把自己的文件路径信息写到自己的文件里,所以路径不对肯定不可用。
    2.你可以用sp_attach_db
    3.备份和恢复都可以通过存储过程调用实现
    sp_backup sp_restore
      

  2.   


    backup database to 备份
    resotre database from 恢复
      

  3.   

    SQL Server 提供了备份,恢复数据库的功能
    你可以看看帮助,
    楼上的朋友说得没错,用sp_backup ,sp_restore
      

  4.   

    我两边建立的库名是一样的,我是用SQL的RESOTRE恢复过去的能不能把具体的语句写给我,谢谢!
    (具体的实现方法)
      

  5.   

    backup database
    resotre database 
    自己查一下SQL的随机帮助不就好了
      

  6.   

    第一,现建立一个连接adoconnection1
    第二,放一个ADOCommand1,connection属性为adoconnection1。
    第三,在ADOCommand1的commandtext中写你的sql语句例如:
        use master
        EXEC sp_dropdevice 'bb'
        EXEC sp_addumpdevice 'disk', 'bb', 'C:\1.bak'
        RESTORE DATABASE   ddd  from DISK = 'C:\1.bak' with replace
    第四,ADOCommand1.Execute就行了。
      

  7.   

    EXEC sp_dropdevice 'bb'
        EXEC sp_addumpdevice 'disk', 'bb', 'C:\1.bak'
    这两句话怎么理解??ADOCommand1.Execute这句是在窗体中写吗?
      

  8.   

    E. 使用 BACKUP 和 RESTORE 创建数据库的复本
    下例显示使用 BACKUP 和 RESTORE 语句创建 Northwind 数据库的复本。MOVE 语句使数据和日志文件还原到指定的位置。RESTORE FILELISTONLY 语句用于确定待还原数据库内的文件数及名称。该数据库的新复本称为 TestDB。有关更多信息,请参见 RESTORE FILELISTONLY。 BACKUP DATABASE Northwind 
       TO DISK = 'c:\Northwind.bak'
    RESTORE FILELISTONLY 
       FROM DISK = 'c:\Northwind.bak'
    RESTORE DATABASE TestDB 
       FROM DISK = 'c:\Northwind.bak'
       WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
       MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
      

  9.   

    我最近调试的,希望对你有用
    var
      reg: Tregistry;
      strPath :string;
    begin
      MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'set_info.ini');
      IsConnect:=MyIniFile.ReadString('ADO', 'ConnectionString', '');
      if IsConnect='' then
            begin
            EditConnectionString(ADOConnection1) ;
            MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'set_info.ini');
            MyIniFile.WriteString('ADO', 'ConnectionString', ADOConnection1.ConnectionString);
            ADOConnection1.ConnectionString:=MyIniFile.ReadString('ADO', 'ConnectionString', '');
            adodataset1.Close;
            adodataset1.CommandText:='select name from master..sysdatabases where name='+''''+'test'+'''';
            adodataset1.Open;
            if adodataset1.RecordCount=0 then
            begin
      reg :=Tregistry.Create;
      reg.RootKey := HKEY_LOCAL_MACHINE;
      reg.OpenKey('Software\Microsoft\MSSQLServer\Setup',False);
      strPath :=reg.ReadString('SQLPath');
      reg.CloseKey;
      reg.free;
            //ADOConnection1.Execute('Restore database test from disk = '''+ExtractFilePath(Application.ExeName)+'test.bak'+'''');
            ADOConnection1.Execute('Restore database test from disk ='+''''+ExtractFilePath(Application.ExeName)+'test.bak'+''''+'WITH MOVE'+''''+'test_data'+''''+'to'+''''+strPath+'\data\test_Data.MDF'+''''+','+'move'+''''+'test_log'+''''+'to'+''''+strPath+'\data\test_Log.LDF'+'''');
            end;
            end;
      ADOConnection1.Close;
      MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'set_info.ini');
      ADOConnection1.ConnectionString:=MyIniFile.ReadString('ADO', 'ConnectionString', '');
      ADOConnection1.Open;
      MyIniFile.Free;
      

  10.   

    ------------------------------------------------------------------
    最简单的SQL语句:备份与还原SQL Server自带的数据库在服务器上备份:
    use Northwind
    Backup database Northwind to disk='d:\Northwind_bak.dat' with initRESTORE DATABASE NorthNwind FROM DISK = 'd:\Northwind_bak.dat'------------------------------------------------------------------
    备份数据库这一操作在客户机上实现 
    客户机:machine
    共享目录:share (要完全共享,可写权限)backup:
    bakcup database dbname to disk='\\machine\share\data.bak' with init
    \\machine\share目录要有写权限。restore:
    restore database dbname from disk='\\machine\share\data.bak' 
    //
    备注:restore 语句有很多的选项,可以查看企业管理器的在线帮助。如下
      with replace, move 'dbname_dat' to 'c:\mssql7\data\dbname.mdf', 
       move 'dbname_log' to 'c:\mssql7\data\dbname.log'
    其中'c:\mssql7\data\'是服务器的目录,这点要注意------------------------------------------------------------------------------备份与还原数据库的相关内容:
    SQL Server 7.0数据库备份有四种:完全数据库备份、增量数据库备份、事务日志备份、数据库文件或文件组备份。在数据库崩溃时,应该首先尝试备份事务日志(这一点很重要),然后恢复最后的数据库备份、该次数据库备份后的所有增量备份,最后恢复事务日志备份,这样可以将数据库恢复到崩溃前的状态。备份是定期的,而不是实时的,所以利用备份并不能完全恢复数据库,它只能将数据库恢复到制作备份的那一刻 ...... 数据库日志是实时的,他忠实的记录下所有对数据库的更新操作。因此,当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(大部分数据),然后运行数据库日志,即将备份后所做的操作重新在做一遍,从而将数据库完全恢复。
    --备份完整的数据库---------------------------------------------------------------
    //创建一个备份设备:
    -- 1. Create the backup device for the full MyNwind backup.///
    USE master
    EXEC sp_addumpdevice 'disk', 'MyNwind_2', 'c:\mssql7\backup\MyNwind_2.dat'-- 2. Back up the full MyNwind database.BACKUP DATABASE MyNwind TO MyNwind_2--备份数据库的日志--------------------------------------------------------------- 
    --1. Create the log backup device.USE master
    EXEC sp_addumpdevice 'disk', 'MyNwindLog1', 'c:\mssql7\backup\MyNwindLog1.dat'--2.  Update activity has occurred before this point. Back up the log of the MyNwind database.BACKUP LOG MyNwind TO MyNwindLog1-------
    try
    AdoQuery1.Close;
    AdoQuery1.SQL.Clear;
    AdoQuery1.SQL.Add('backup database pubs');
    AdoQuery1.SQL.Add('to disk='+''''+edtPath.Text+'''');
    AdoQuery1.ExecSQL;
    except
      ShowMessage('备份数据库失败!');
      exit;
    end;
    注:参阅了《大本营3.0》