Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

Копирование БД и монопольный доступ   Найти похожие ветки 

 
Belkova   (2004-12-28 18:05) [0]

Мастера delphi. Подскажите, пожалуйста, почему при копировании файла с БД NameDB.gdb с базой можно работать только в монопольном  режиме и что сделать, чтобы работало несколько пользователей?


 
Johnmen ©   (2004-12-28 18:15) [1]

Надо бы ещё isc4.gdb
Подробности на ibase.ru


 
Belkova   (2004-12-28 18:28) [2]

isc4.gdb скопировала, но все равно выдает сообщение, что процесс не может получить доступ к файлу, т.к. файл занят другим процессом.


 
Johnmen ©   (2004-12-28 18:30) [3]

Какой процесс? Какой файл?


 
Соловьев ©   (2004-12-28 18:34) [4]

2 Belkova
А куда Вы копируете? Там стоит IB6?

P.S.  Давно надо уже перейти на FB 1.5.2


 
DSKalugin ©   (2004-12-28 18:41) [5]

Этот вопрос мы недавно тут обсуждали.
мой подробный ответ тут

http://delphimaster.net/view/3-1104145015/


 
DSKalugin ©   (2004-12-28 18:45) [6]

если при копировании файла БД ведется работа с нею, то в результате копия получится испорченным файлом. Т.к. в процессе копирования она может быть и будет несколько раз изменена пользовательскими запросами.
Поэтому необходимо не копировать, а выполнять функцию резервного копирования с последующим восстановлением

см доку на www.ibase.ru


 
Belkova   (2004-12-28 18:48) [7]

Процесс, я думаю, что приложение delphi, а файл *.GDB.
Извиняюсь, пользуюсь Yaffil 1.0.
Копирую в папку  с Yaffil.


 
Belkova   (2004-12-28 18:49) [8]

Спасибо, с примером буду разбираться.


 
Belkova   (2004-12-29 08:39) [9]

Выполнила резервное копирование, затем восстановила. Но по прежнему выдает ту же ошибку. Что делать?


 
Sergey13 ©   (2004-12-29 09:25) [10]

2[9] Belkova   (29.12.04 08:39)
А зачем его вообще копировать?


 
Belkova   (2004-12-29 10:38) [11]

Чтобы тестировать программу, не повредив, саму БД.


 
Sergey13 ©   (2004-12-29 10:42) [12]

2[11] Belkova   (29.12.04 10:38)
>Чтобы тестировать программу, не повредив, саму БД.
Вот так и портятся базы. 8-) См. [6] DSKalugin ©   (28.12.04 18:45)
Тебе надо восстановить у себя копию из бэкапа - и все.


 
Belkova   (2004-12-29 10:52) [13]

Я так и делаю сейчас. Все равно ошибка.


 
Sergey13 ©   (2004-12-29 11:02) [14]

2[13] Belkova   (29.12.04 10:52)
>Я так и делаю сейчас.
Конкретно, по шагам, что именно?

>Все равно ошибка.
Конкретно. Какая, где, при каких условиях?


 
Belkova   (2004-12-29 12:26) [15]

Делаю BackUP нужной мне БД, затем Restore из резервной копии на локальный компьютер.
В Ibexpert открываю БД (восстановленную). Затем запускаю приложение, которое должно подключиться к этой же БД. Путь прописан в ini-файле. При подключении из приложения выходит сообщение
I/O Error for file "c:\Alfa\AlfaDB.gdb"
Error While trying to open file
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.


 
Sergey13 ©   (2004-12-29 12:44) [16]

Мое ИМХО, это у тебя в программе чего то не того. Или какой нибудь конфликт клиентских dll-ок. Сервер у тебя на компе нормальный или ембеддовский? И что значит "с базой можно работать только в монопольном  режиме". Т.е. если погасить эксперта, то работает?


 
Belkova   (2004-12-29 13:47) [17]

Если погасить эксперта, то работает. Сервер нормальный.


 
DSKalugin ©   (2004-12-29 13:59) [18]

>Путь прописан в ini-файле

ini-файл в студию!
и процедуру извлечения/подключения тоже


 
Belkova   (2004-12-29 14:03) [19]

[CONFIG]
Server=LocalHost
Path=c:\Alfa\alfacom.gdb
User=SYSDBA


 
Belkova   (2004-12-29 14:06) [20]

if DBAlfa.Connected then DBAlfa.Connected:=False;
Cfg:=TIniFile.Create(ExtractFilePath(ParamStr(0)+"connect.ini");
S_Temp:=Cfg.ReadString("CONFIG","Server","localhost");
if S_Temp="localhost" then
DBAlfa.DatabaseName:=Cfg.ReadString("CONFIG","Path","");
else
fDM.DBAlfa.DatabaseName:=Cfg.ReadString("CONFIG","Server","")+":"+Cfg.ReadString("CONFIG","Path","");
Cfg.Free;
 DBAlfa.Params.Values["Password"]:=EdPassword.text;
 DBAlfa.Params.Values["user_name"]:=EDUserName.Text;
  try
   DBAlfa.Connected:=True ;
  except
   MessageDlg("Вы ввели неправильный пароль! Попробуйте еще раз.",mtError,[mbOk],0);
  DBAlfa.Connected:=False;
 end;


 
DSKalugin ©   (2004-12-29 15:22) [21]

if DBAlfa.Connected then DBAlfa.Close;
Cfg:=TIniFile.Create(ExtractFilePath(ParamStr(0)+"connect.ini");
S_Temp:=Cfg.ReadString("CONFIG","Server","localhost");
"localhost" неудачный DefaultString, пусть будет ""
if S_Temp="localhost" then
DBAlfa.DatabaseName:=Cfg.ReadString("CONFIG","Path","")?;?
в итоге имеем DBAlfa.DatabaseName:="localhost" что не правильно. т.к. путь и файл не указаны
else
fDM.DBAlfa.DatabaseName:=Cfg.ReadString("CONFIG","Server","")+":"+Cfg.ReadString("CONFIG","Path","");
Cfg.Free;
DBAlfa.Params.Values["Password"]:=EdPassword.text;
DBAlfa.Params.Values["user_name"]:=EDUserName.Text;
 try
  DBAlfa.Open ;
 except
  MessageDlg("Вы ввели неправильный пароль! Попробуйте еще раз.",mtError,[mbOk],0);
 DBAlfa.Connected:=False;//не надо, БД не откроется
end;

и еще
1-"LocalHost"<>"localhost"
2-в connect.ini Path=c:\Alfa\alfacom.gdb,
а в тексте ошибки I/O Error for file "c:\Alfa\AlfaDB.gdb"
разницу видиш. Файлы РАЗНЫЕ?
В дизайнтайм база должна быть отключена
DBAlfa.Connected=False;



Страницы: 1 вся ветка

Текущий архив: 2005.01.30;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.045 c
6-1099048614
leonidus
2004-10-29 15:16
2005.01.30
idHTTP и работа с куками


1-1105703664
tolstiak
2005-01-14 14:54
2005.01.30
Что посоветуете?


1-1106046420
ShimON
2005-01-18 14:07
2005.01.30
Обработать выход из Windows


1-1106005099
TGLDummyCube
2005-01-18 02:38
2005.01.30
Неразрешимая проблема из GLScene ? Сохранение float-значения


8-1098032202
Kovsh
2004-10-17 20:56
2005.01.30
Как регулировать громкость через Делфи?