Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.503 c
1-1105390312
vertal
2005-01-10 23:51
2005.01.30
Возбуждение исключения в другом потоке


8-1097942663
TeNY
2004-10-16 20:04
2005.01.30
Формат изображения в TPicture


14-1105085486
Шишкин Илья
2005-01-07 11:11
2005.01.30
Выбор КПК


4-1102580573
fynjy1984
2004-12-09 11:22
2005.01.30
Как определить открыт или закрыт лоток CD-Rom a


6-1099927417
MegaVolt
2004-11-08 18:23
2005.01.30
Как на сервере определить MAC клиента?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский