안녕하세요, 공대규라고 합니다.
환경 :
NT 4.0 SP5
SQL Server 7.0 SP 1
DELPHI 4.0
(질문 1)
리모트에 있는 SQL Server DB의 테이블에 수백만 건의 데이터가 등록되어 있고요,
그것을 로컬에 있는 프로그램에서 연결한 다음 작업을 하려고 합니다.
그런데 수 천 개까지 처리하다가 프로그램이 죽은 듯 해서 작업관리자에서 보면 제 프로그램이 "응답없음"으로 되어 있습니다.
그 데이터를 수 만 개 로컬 테이블에 복사해 와서 같은 프로그램을 돌리면 정상적으로 작업이 완료됩니다.
리모트로만 연결하면 몇 천 개만 처리하고 다운되는데 왜 그런지요?
소스는 다음과 같습니다.
while NOT ng_sum_aduriraw_tbl.EOF do
begin
uri_length := length(ng_sum_aduriraw_tblURIIDRAW.value);
if copy(ng_sum_aduriraw_tblURIIDRAW.value, 1, 6) <> '/event' then
not_event := TRUE
else
not_event := FALSE;
if ((uri_length > 0) and not_event) then // 데이터가 있고 event.ng 가 아니면 수행.
begin
cp_id := extract_cpid(ng_sum_aduriraw_tblURIIDRAW.value); // URI 정보에서 cp id 추출
if cp_id <> 'SKIP' then // cp id가 없는 경우 SKIP
begin
if (H_iIP_tbl.findkey([cp_id])) then
CUR_IPID := H_iIP_tblIPID.value
else
begin
H_iIP_tbl.append;
H_iIP_tblIP.value := cp_id;
H_iIP_tblDateAdded.value := ng_sum_aduriraw_tblSTARTDATE.value;
H_iIP_tbl.post;
end;
H_sIPs_tbl.append;
H_sIPs_tblsVisits.value := ng_sum_aduriraw_tblCLICKS.value;
H_sIPs_tblsRequests.value := ng_sum_aduriraw_tblIMPRESSIONS.value;
H_sIPs_tbl.post;
end;
end;
ng_sum_aduriraw_tbl.next;
end;
(질문 2)
그 테이블을 더블클릭하여 필드를 읽어 올 때 분명히 ID (자동 증가되어 입력되는 필드) 필드인데,
TAutoIncField로 선언이 안 되고 TIntegerField로 선언이 됩니다.
다른 테이블의 ID 필드는 TAutoIncField로 선언이 되는데 어떤 한 테이블이 그럽니다.
그래서 TAutoIncField로 고쳐서 프로그램 돌리면 타입이 안 맞다고 안 되고요...
어떻게 해결하면 될까요?
(질문 3)
TFloatField에 TIntegerField 값을 넣을 때 특별히 주의할 일이 있나요?
값이 1인 경우에는 똑바로 들어가는데 726 같은 세 자리는 똑바로 안 들어 가는 것 같습니다.
이유가 뭘까요?
(질문 4)
저는 지금 리모트 SQL Server Table을 TTable에 연결하여 작업하고 있습니다.
TTable의 Method를 써서요 이 방법보다 좋은 방법이 있는지요?
경험 있으신 분들의 조언 부탁 드립니다.
공대규 드림