Главная страница
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.038 c
10-1082218425
Karbo
2004-04-17 20:13
2005.01.30
Как избавиться от сообщений Excel при закрытии Workbooks ?


9-1098519310
Malefic
2004-10-23 12:15
2005.01.30
Asphyre, PowerDraw: effectDiffuse не работает с RotateEffect


3-1103801697
tytus
2004-12-23 14:34
2005.01.30
Как динамически создать столбцы в сетке?


3-1103895919
korvin
2004-12-24 16:45
2005.01.30
Хранимая процедура и её входные параметры.


3-1103908935
vixic
2004-12-24 20:22
2005.01.30
TDataSetProvider