Форум: "Базы";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
ВнизКопирование БД и монопольный доступ Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.034 c