![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирование БД и монопольный доступ [D7, IB6.x]
Belkova © (2004-12-28 18:05:00)Мастера delphi. Подскажите, пожалуйста, почему при копировании файла с БД NameDB.gdb с базой можно работать только в монопольном режиме и что сделать, чтобы работало несколько пользователей?
DSKalugin (2004-12-29 15:22:00) [1]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;
Belkova (2004-12-29 14:06:00) [2]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;
Belkova (2004-12-29 14:03:00) [3][CONFIG]
Server=LocalHost
Path=c:\Alfa\alfacom.gdb
User=SYSDBA
DSKalugin (2004-12-29 13:59:00) [4]>Путь прописан в ini-файле
ini-файл в студию!
и процедуру извлечения/подключения тоже
Belkova (2004-12-29 13:47:00) [5]Если погасить эксперта, то работает. Сервер нормальный.
Sergey13 (2004-12-29 12:44:00) [6]Мое ИМХО, это у тебя в программе чего то не того. Или какой нибудь конфликт клиентских dll-ок. Сервер у тебя на компе нормальный или ембеддовский? И что значит "с базой можно работать только в монопольном режиме". Т.е. если погасить эксперта, то работает?
Belkova (2004-12-29 12:26:00) [7]Делаю BackUP нужной мне БД, затем Restore из резервной копии на локальный компьютер.
В Ibexpert открываю БД (восстановленную). Затем запускаю приложение, которое должно подключиться к этой же БД. Путь прописан в ini-файле. При подключении из приложения выходит сообщение
I/O Error for file 'c:\Alfa\AlfaDB.gdb'
Error While trying to open file
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
Sergey13 (2004-12-29 11:02:00) [8]2[13] Belkova (29.12.04 10:52)
>Я так и делаю сейчас.
Конкретно, по шагам, что именно?
>Все равно ошибка.
Конкретно. Какая, где, при каких условиях?
Belkova (2004-12-29 10:52:00) [9]Я так и делаю сейчас. Все равно ошибка.
Sergey13 (2004-12-29 10:42:00) [10]2[11] Belkova (29.12.04 10:38)
>Чтобы тестировать программу, не повредив, саму БД.
Вот так и портятся базы. 8-) См. [6] DSKalugin © (28.12.04 18:45)
Тебе надо восстановить у себякопию из бэкапа - и все.
Belkova (2004-12-29 10:38:00) [11]Чтобы тестировать программу, не повредив, саму БД.
Sergey13 (2004-12-29 09:25:00) [12]2[9] Belkova (29.12.04 08:39)
А зачем его вообще копировать?
Belkova (2004-12-29 08:39:00) [13]Выполнила резервное копирование, затем восстановила. Но по прежнему выдает ту же ошибку. Что делать?
Belkova (2004-12-28 18:49:00) [14]Спасибо, с примером буду разбираться.
Belkova (2004-12-28 18:48:00) [15]Процесс, я думаю, что приложение delphi, а файл *.GDB.
Извиняюсь, пользуюсь Yaffil 1.0.
Копирую в папку с Yaffil.
DSKalugin (2004-12-28 18:45:00) [16]если при копировании файла БД ведется работа с нею, то в результате копия получится испорченным файлом. Т.к. в процессе копирования она может быть и будет несколько раз изменена пользовательскими запросами.
Поэтому необходимо не копировать, а выполнять функцию резервного копирования с последующим восстановлением
см доку на www.ibase.ru
DSKalugin (2004-12-28 18:41:00) [17]Этот вопрос мы недавно тут обсуждали.
мой подробный ответ тут
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1104145015&n=1
Соловьев (2004-12-28 18:34:00) [18]2 Belkova
А куда Вы копируете? Там стоит IB6?
P.S. Давно надо уже перейти на FB 1.5.2
Johnmen (2004-12-28 18:30:00) [19]Какой процесс? Какой файл?
Belkova (2004-12-28 18:28:00) [20]isc4.gdb скопировала, но все равно выдает сообщение, что процесс не может получить доступ к файлу, т.к. файл занят другим процессом.