用SQL SERVER数据库在客户端如何备份?

解决方案 »

  1.   

    可以用存储过程,例:
    CREATE PROCEDURE  [dbo].[BackupDatabase]
    @dbname VARCHAR(256),
    @filename VARCHAR(256),
    @devname VARCHAR(256)
    AS
    IF EXISTS(SELECT name FROM master.dbo.sysdevices WHERE cntrltype=2 AND name=@devname)
       SELECT 'FAIL'
    ELSE
    BEGIN
       EXEC sp_addumpdevice 'disk', @devname, @filename
       BACKUP DATABASE  @dbname to @devname
       SELECT 'OK'
    END//DELPHI中调用
    function BackupDatabase(DatabaseName,DevName,FileName:string):boolean;
    var
      Q:TADOQuery;
    begin
       Q :=TADOQuery.Create(Self);
       try
          Q.SQL.Add('EXEC BackupDatabase '+Quotedstr(DatabaseName)+','+
                    Quotedstr(FileName)+','+Quotedstr(DevName));
          Q.Open
          result :=Q.Fields[0].AsString='OK';
          Q.Close;
       finally
          Q.Free
       end;
    end;
      

  2.   

    目前MSSQL应该还不支持非本地磁盘备份,有两种方法:
    ◎备份后取得文件(copy到local)
    ◎自己把表/列数据存起来。