create  procedure  sp_backup
@database varchar(20),
@backup_device varchar(20)
as
BACKUP DATABASE @database TO DISK ='c:\' + @backup_device + '.bak'
go检查语法的时候提示:第5行:加号附近有语法错误;
怎么回事?

解决方案 »

  1.   

    create  procedure  sp_backup
    @database varchar(20),
    @backup_device varchar(20)
    as
      Exec('BACKUP DATABASE '+ @database+' TO DISK ='+"'"+'c:\'+ @backup_device + '.bak'+"'")
    go
      

  2.   

    create  procedure  sp_backup
    @database varchar(20),
    @backup_device varchar(20)
    as
    --这里改动
      Exec('BACKUP DATABASE '+ @database+' TO DISK ='+"'"+'c:\'+ @backup_device + '.bak'+"'")
    go
      

  3.   

    create  procedure  sp_backup
    @database varchar(20),
    @backup_device varchar(20)as
     declare @device varchar(30)
     set @device ='c:\'+@backup_device+'.bak' 
     BACKUP DATABASE @database TO DISK=@device
    go
      

  4.   

    检查语法通过了,但在程序里调用出了问题:
    begin
        sp_backup.ParamByName('@database').asstring:='yw_jxc';
        sp_backup.ParamByName('@backup_device').asstring:='yw_jxc_backup';
        sp_backup.Prepare;
        state := true;
        try
          if not sp_backup.Active then
            sp_backup.Active := True;
          if sp_backup.Active then
            Application.MessageBox('备份完毕!','提示',MB_OK+MB_ICONINFORMATION);
        except
          Application.MessageBox('备份数据库错误!','错误',MB_OK+MB_ICONERROR);
          Close;
        end;
        Close;
      end;
    到底是哪里有问题?
      

  5.   

    begin
        sp_backup.ParamByName('@database').asstring:='yw_jxc';
        sp_backup.ParamByName('@backup_device').asstring:='yw_jxc_backup';
        sp_backup.Prepare;
        try
          sp_backup.ExecProc;   //不用返回值用ExecProc方法
          Application.MessageBox('备份完毕!','提示',MB_OK+MB_ICONINFORMATION);
        except
          Application.MessageBox('备份数据库错误!','错误',MB_OK+MB_ICONERROR);
        end;
    end;