开发环境:
 Delphi7 ---Ado---- Sql Server7/2k
运行环境:
 Windows平台
软件中内置了数据库自动生成的功能,生成数据库通常用以下两种方式之一:
  备份恢复方式
  sp_attach_single_file_db方式
但是这两种方式在生成数据库时都存在生成不成功的时候,还有其他更好的
生成方式吗
 

解决方案 »

  1.   

    你这种是附件数据库吧?!
    恢复数据库应该是:
    procedure TFrmDBMaintain.Button2Click(Sender: TObject);
    var
      address: String;
    begin
      address:=Edit2.Text;
      if not FileExists(address) then
      begin
        Application.MessageBox('数据库备份文件不存在','文件',MB_OK);
        Exit;
      end;  if DMADO.ADOConnection1.Connected then DMADO.ADOConnection1.Close;
      DMADO.ADOConnection1.DefaultDatabase:='Master';
      DMADO.ADOConnection1.Open;  try
        if DMADO.ADOQuery1.Active then DMADO.ADOQuery1.Close;
        DMADO.ADOQuery1.SQL.Clear;
        DMADO.ADOQuery1.SQL.Add('USE master');
        DMADO.ADOQuery1.SQL.Add('EXEC sp_dropdevice '+DBBK);
        DMADO.ADOQuery1.ExecSQL;
      except
        Application.MessageBox('数据库备份驱动器不存在','错误',MB_OK);
        Exit;
      end;
      if DMADO.ADOQuery1.Active then DMADO.ADOQuery1.Close;
      DMADO.ADOQuery1.SQL.Clear;
      DMADO.ADOQuery1.SQL.Add('USE master');
      DMADO.ADOQuery1.SQL.Add('EXEC sp_addumpdevice'+''''+'disk'+''''+','+''''+DBBK+''''+',');
      DMADO.ADOQuery1.SQL.Add(''''+address+'''');
      DMADO.ADOQuery1.ExecSQL;
      try
        if DMADO.ADOQuery1.Active then DMADO.ADOQuery1.Close;
        DMADO.ADOQuery1.SQL.Clear;
        DMADO.ADOQuery1.SQL.Add('RESTORE DATABASE '+DatabaseName+' FROM '+DBBK);
        DMADO.ADOQuery1.ExecSQL;
        DMADO.ADOQuery1.Close;
      except
        Application.MessageBox('数据库恢复失败','错误',MB_OK)
      end;  if DMADO.ADOConnection1.Connected then DMADO.ADOConnection1.Close;
      DMADO.ADOConnection1.DefaultDatabase:=DatabaseName;
      DMADO.ADOConnection1.Open;
    end;