TibRestore не выполняется функция восстановления

Ремонт и восстановление баз данных InterBase, Firebird, Yaffil

Модераторы: kdv, Alexey Kovyazin

Ответить
ali
Сообщения: 9
Зарегистрирован: 08 мар 2005, 03:54

TibRestore не выполняется функция восстановления

Сообщение ali » 07 апр 2005, 20:05

на Delphi 6 эта функция работает , а на 7 почему то нет

function TfmMain.StartRestore(FileName: String): Boolean;
var
Cursor: TCursor;
begin
Cursor := Screen.Cursor;
Screen.Cursor := crSQLWait;
Result:=False;
try
ibRestore.BackupFile.Add(FileName);
ibRestore.DatabaseName.Add(dbALI.DatabaseName);
ibRestore.Attach();
ibRestore.ServiceStart;<---здесь выполнение функции прекращается
Result:=True;
finally
if ibRestore.Active then ibRestore.Detach();
Screen.Cursor := Cursor;
end;
end;

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 07 апр 2005, 20:37

IBRestore.ServerName:='server';
IBRestore.Protocol:=TCP;
IBRestore.DatabaseName.Add('c:\dir\data.gdb');
IBRestore.BackupFile.Add('c:\dir\data.gbk');
...

в DatabaseName НЕ пишется имя сервера. Оно пишется только в ServerName. Ты бы указал, чем ты там заполняешь параметры.
ibRestore.ServiceStart;<---здесь выполнение функции прекращается
потому что не может к серверу достучаться?

ali
Сообщения: 9
Зарегистрирован: 08 мар 2005, 03:54

Сообщение ali » 09 апр 2005, 03:13

Код: Выделить всё

function TfmMain.StartRestore(FileName: String): Boolean;
var
  Cursor: TCursor;
begin
  Cursor := Screen.Cursor;
  Screen.Cursor := crSQLWait;
  Result:=False;
     try
      MainTransaction.CommitRetaining;
      MainTransaction.Active:=False;
      ibRestore.Attach;
      ShutDownDataBase;
      ibRestore.BackupFile.Add(FileName);
      ibRestore.DatabaseName.Add(dbALI.DatabaseName);
      ibRestore.ServiceStart;
      Result:=True;
     finally
       if ibRestore.Active then ibRestore.Detach();
         Screen.Cursor := Cursor;
     end;
end;

procedure TfmMain.ShutDownDataBase;
begin
  if MainTransaction.InTransaction then
    MainTransaction.Commit;
  dbALI.CloseDataSets;
  dbALI.Close;
end;
buffsize 32000
Options [Replace,CreateNewDB,UseAllSpace]
PageSize 8192
Запускаю на сервере
Server ''

Ругается Cannot perform operation DB is not open,
а когда базу не выключаю ругается на то что транзакция активна

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 09 апр 2005, 13:37

MainTransaction.CommitRetaining;
MainTransaction.Active:=False;
бред. зачем commitretaining, если можно просто Commit вызвать?
ты подумай, что ты пишешь-то...

что у тебя за имя базы и имя бэкапа? почему ты не указываешь ServerName?

ali
Сообщения: 9
Зарегистрирован: 08 мар 2005, 03:54

Сообщение ali » 10 апр 2005, 02:17

не пишу имя сервера потому что работаю на сервере

Ответить