_!--==> А тута Windows Clipboard начинается... <==--!_
procedure TOPCService.ServiceStart(Sender: TService; var Started: Boolean);
var Browser:OPCBrowser;
i,j,l,n,k:integer;
s,s1:string;
begin
Init:=CoInitialize(Nil);
if(Init<>S_OK)and(Init<>S_FALSE)then
begin
LogMessage('Служба не запущена по причине сбоя при инициализации COM. Код
ошибки '+IntToHex(Init,8),EVENTLOG_ERROR_TYPE,0,1);
Started:=false;
end;
if(Init=S_OK)or(Init=S_FALSE)then
try
....
ADOQuery=TADOQuery.Create(nil);
ADOQuery.ConnectionString:=ConnectionStr;
.....
except
on E:Exception do
begin
Started:=false;
....
if ADOQuery<>nil then ADOQuery.Free;
ADOQuery:=nil;
if(Init=S_OK)or(Init=S_FALSE)then CoUninitialize;
LogMessage('Ошибка. '+E.Message,EVENTLOG_ERROR_TYPE,0,1);
end;
end;
_!--==> А тута Windows Clipboard заканчивается... <==--!_
В обработчике события OnStop и OnShutdown соответственно всё за собой подчищаю.
В обработчике события OnExecute вызываю один из написанных мной методов
_!--==> А тута Windows Clipboard начинается... <==--!_
procedure TOPCService.WriteIBSDataToOPC;
var i:integer;
begin
try
OutputDebugString('Попытка начать запись в OPC-сервер');
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('Select count(*) from work_time where stop_time is null');
OutputDebugStringW(PWideChar('Строка подключения к БД
'+ADOQuery.ConnectionString));
ADOQuery.Open;
OutputDebugString(PChar('Количество записей
'+ADOQuery.Fields.Fields[0].AsString));
.....
except
on E:Exception do
begin
OutputDebugString(PChar('Ошибка. '+E.Message));
LogMessage('Ошибка. '+E.Message,EVENTLOG_ERROR_TYPE,0,1);
end;
end;
_!--==> А тута Windows Clipboard заканчивается... <==--!_
Всё, что пишу функцией OutputDebugString просматриваю программой DebugView. И
обнаружил такой момент. При первом же выполнении запроса в логах вижу
исключение "Разрушительный сбой". Остальные запросы тоже не выполняются с такой
же ошибкой. Таблица work_time существует, поле stop_time в ней есть логин, под
которым работает сервис, имеет права на выборку. Кто что может предложить по
решению данной проблемы? MSSQL 2005 Express, сервис запусал под Win2000 и
WinXP.
Желаю Вам всего наилучшего, All.Дмитрий.