Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Копирование БД и монопольный доступ [D7, IB6.x]


Страницы:   1 2

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 скопировала, но все равно выдает сообщение, что процесс не может получить доступ к файлу, т.к. файл занят другим процессом.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо