![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как остановить InterBase Sever [D6, IB6.x]
ali_tash © (2005-07-02 14:22:00)Мне нужно остановить Interbase Server, для того чтобы записать новую версию дллки(UDF) - старую сервер использует и не даёт это сделать.
пытаюсь так
//Пытаемся скопировать новую версию UDF
WinExec('net stop "InterBase Guardian"',SW_HIDE);
WinExec('net stop "InterBase Server"',SW_HIDE);
Sleep(2000);
if not ExtractRes('dll','UDF',temp_path+'MY_UDF.dll') then
ShowMessage('ОШИБКА !'+#13+'Файл UDF MY_UDF.dll не извлечён');
if CopyFile(PChar(temp_path+'MY_UDF.dll'),
'C:\Program Files\Borland\InterBase\Udf\MY_UDF.dll',
False)=False then
begin
MessageDlg('Ошибка копирования файла MY_UDF.dll'
+#13+'в C:\Program Files\Borland\InterBase\Udf\'
+#13+'перезагрузите компьютер и запустите обновление снова'
+#13+':Temp каталог = '+temp_path, mtError, mbOKCancel,0);
Halt;
end;
WinExec('net start "InterBase Guardian"',SW_HIDE);
Sleep(2000);
И далее подключаюсь к серверу.
Но этот способ кажется мне не недёжен т.к.
Я не знаю остановлен ли сервер и запущен ли потом.
Как можно узнать что процесс запущен или остановлен
и правильно ли я остановливаю InterBase ?
WondeRu (2005-07-04 10:34:00) [1]kaif © (04.07.05 6:00) [2]
Это так, в качестве идеи...
у меня не прокатывало такое...
kaif (2005-07-04 06:00:00) [2]Может быть не надо останавливать сервер? Может быть достаточно будет сделать Database Shutdown, чтобы вышибить всех пользователей? Если нет соединений, то udf можно будет спокойно удалить. Это так, в качестве идеи...
DSKalugin (2005-07-02 15:37:00) [3]запиши все эти операции во внешний скрипт
*.cmd *.bat *.jc *.sh ... и т.д. по вкусу
и тогда все операции в программе будут сводиться к следующему
1 - отключение от базы
2 - WinExec('ReaplaceUDF.cmd',SW_Normal);
3 - подключение к базе