Форум: "Базы";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];
Вниз
Синхронизация с сервером. Найти похожие ветки
← →
Ш-К (2003-05-11 06:31) [0]Как синхронизировать время на клиентских машинах по серверу на котором IB. 2-звенка.
← →
Alexandr (2003-05-11 08:59) [1]получить время с сервера Interbase
select cast("now" as Date) from RDB$dataBase
здесь возможны вариации в зависимости от диалекта БД
А уж как это время прописать себе на компьютер - это тебе в другую конфу.
Кстати, в FIBPlus эта операция делается автоматически
← →
Ш-К (2003-05-11 19:07) [2]Как получить время я понимаю. Например, делал так:
CREATE PROCEDURE GET_NOW
RETURNS (
RESULT DATE)
AS
begin
RESULT = "NOW";
end
Другое дело, что возможны грабли, когда запрос не выполнился. Транзакция "зависла" или сервер упал... не знаю. Т.е. мне нужна функция, которая возвращает время с сервера, если запрос выполнился, и 0(1899...), если была ошибка.
Вот как я делаю:
function TDataMod.GetNowFromServer: TDateTime;
var SystemTime: TSystemTime;
begin
result:= 0;
GET_NOW_Transaction.StartTransaction;
try
GET_NOW_SP.ExecProc;
finally
GET_NOW_Transaction.Commit;
result:= GET_NOW_SP.FieldByName("RESULT").AsDateTime;
DateTimeToSystemTime(result, SystemTime);
SetSystemTime(SystemTime);
end;
end;
Оно то работает. Только вот будет ли работать ВСЕГДА?
← →
Desdechado (2003-05-11 19:13) [3]1-й вопрос звучал иначе...
поставь у клиентов time-сервер на IB-сервер или сделай в планировщике net time
вот и вся синхронизация
← →
Ш-К (2003-05-11 22:14) [4]А что такое "time-сервер на IB-сервер"?
И где взять планировщик net time? Это что, программы отдельные или настройки чего-то?
Можно подробнее. Поиск ничего не даёт - слова слишком ходовые.
PS/ Клиенты-98 сервер-2000.
← →
Sergey13 (2003-05-12 08:35) [5]2Ш-К (11.05.03 22:14)
В autoexec.bat на клиенте напиши строчку
net time \\servname /set
вроде так (точно не помню). servname - имя сервера
← →
ЮЮ (2003-05-12 09:17) [6]>Другое дело, что возможны грабли, когда запрос не выполнился. Транзакция "зависла" или сервер упал...
Может тогда написать чуть иначе:
function TDataMod.GetNowFromServer: TDateTime;
var SystemTime: TSystemTime;
begin
try
GET_NOW_SP.ExecProc;
result:= GET_NOW_SP.FieldByName("RESULT").AsDateTime;
DateTimeToSystemTime(result, SystemTime);
SetSystemTime(SystemTime);
except
result:= 0;
end;
end;
← →
Johnmen (2003-05-12 09:46) [7]Одного не могу понять, причем здесь транзакции ?
← →
Cranium (2003-05-12 12:09) [8]Если тебе нужно точное серверное время, так подставляй его в тригере, тогда получишь точное время записи.....
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c