interbase数据库文件损坏,如何修复?我用一下方法:
1、断开所有与IB服务器的连接
2、复制一份,对复制文件进行以下操作,并且要独占访问
3、进入Command命令窗口
4、为了避免在以下命令行中每次都输入用户名与密码,特设置以下两个变量:
SET ISC_USER=SYSDBA
SET ISC_PASSWORD=masterkey
5、对损坏的数据库进行检查:
gfix -v -full abc.gdb
6、如果上一条命令已指出这个数据库有问题,我们现在需要修复它:
gfix -mend -full -ignore abc.gdb
7、再检查一遍,看数据库是否修好:
gfix -v -full abc.gdb
8、如果仍有错误,你必须做一个数据备份与恢复操作:
gbak -backup -v -ignore abc.gdb abc.gbk
9、若上面方法备份失败,关闭垃圾收集功能试试:
gbak -backup -v -ignore -garbage abc.gdb abc.gbk
10、如果仍未备份成功,可能是在一个过渡状态的事务中记录损坏,加上-limbo参数试试:
gbak -backup -v -ignore -garbage -limbo abc.gdb abc.gbk
11、从备份文件中恢复数据(仍不成功,我也没办法了)
gbak -create -v abc.gbk ddd.gdb
提示:unavilable database
高手请帮忙解决!

解决方案 »

  1.   

    InterBase的資料庫若損壞時我們可以在IBConsole用Validation來修復,
    但要如何寫在我們的程式裡, 按一顆按鈕即可修復?////////////////
    IBX元件盤中有一個IBValidationService1可以做到, 不過我到目前為止(三年), 還沒有遇到IBfile有毀損的現象, 所以沒有實作可提供, 我蠻好奇, 檔案
    是如何毀損, 我想取得一個已毀損的檔案來做測試!以下是截取 IBX.HLP中的內容
    The following procedure illustrates how to set database validation options using check box components.procedure TForm1.Button3Click(Sender: TObject);begin
     with IBValidationService1 do
      begin
      ServerName := 'Poulet';
      DatabaseName := 'c:\interbase\tutorial\tutorial.gdb';
      LoginPrompt := False;
      Params.Add('user_name=sysdba');
      Params.Add('password=masterkey');
      Active := True;
      Options := [];
        try
          if CheckBox1.Checked then Options := Options + [LimboTransactions];
          if CheckBox2.Checked then Options := Options + [CheckDB];      if CheckBox3.Checked then Options := Options + [IgnoreChecksum];
          if CheckBox4.Checked then Options := Options + [KillShadows];
          if CheckBox5.Checked then Options := Options + [MendDB];
          if CheckBox6.Checked then Options := Options + [SweepDB];
          if CheckBox7.Checked then Options := Options + [ValidateDB];
          if CheckBox8.Checked then Options := Options + [ValidateFull];    finally
          Active := False;
        end;
      end;
    end;
      

  2.   

    我用interbase5.0,没有IBValidationService控件。
    我这里的interbase数据文件损坏的频率还很高的。急盼高手帮忙!