DB 에 3초에 한번씩 쿼리를 해서 소켓으로 전송하는 프로그램을 만들고 있습니다.
그런데 10분정도 지나면 이런 메세지가 뜹니다...
Could not perform the request operation because the minimum query memory is
not available. Decrease the configured value for the 'min memory per query'
server configuration optioin.
메모리 부족이라는 얘기같은데 어디서, 어떻게 조절해야하나여..
처음보는 에러에 황당해 하고 있습니다.
조언 부탁드립니다.
에러가 떠도 소켓 전송은 계속 잘 됩니다.
글구 시스템 메모리는 1 GB 구여... 하드 디스크는 약 14 GB 의 여유가 있습니다.
다음은 쿼리문 전체 소스입니다...
처음 짜 보는거라 좀 주먹구구식이지만 잘 좀 봐 주세여.. ^^;
일주일째 헤메고 있어여...
procedure TForm1.Timer1Timer(Sender: TObject);
var
news_id, news_title, news_body, news_update, news_offer, News_Body_Post : string;
i, pos_edaily : integer;
total_news, query_str : string;
news_year, news_month, news_day, news_hour, news_minute, news_second : string;
begin
if client_connect = true then
begin
Query1.close;
Query1.SQL.Clear;
// 쿼리문 시작
query_str := 'select top 1 News_ID, News_title, News_Body, ';
query_str := query_str + ' datepart(Year, News_update) as szYear, datepart(Month, News_update) as szMonth, datepart(Day, News_update) as szDay,';
query_str := query_str + ' datepart(hour, News_update) as szhour, datepart(Minute, News_update) as szMinute, datepart(second, News_update) as szSecond, News_Offer, News_Body_Post';
query_str := query_str + ' from Newstable where News_Offer = 6 order by News_Update desc';
// 쿼리문 끝
Query1.SQL.Add(query_str); // 쿼리 실행
Query1.Open;
news_id := Query1.FieldByName('news_id').Asstring;
news_title := Query1.FieldByName('news_title').Asstring;
news_body := Query1.FieldByName('News_Body').Asstring;
news_year := Query1.FieldByName('szYear').Asstring;
news_month := Query1.FieldByName('szMonth').Asstring;
news_day := Query1.FieldByName('szDay').Asstring;
news_hour := Query1.FieldByName('szHour').Asstring;
news_minute := Query1.FieldByName('szMinute').Asstring;
news_second := Query1.FieldByName('szSecond').Asstring;
news_offer := Query1.FieldByName('news_offer').Asstring;
news_offer := 'Dtmaster';
news_body_post := Query1.FieldByName('news_body_post').Asstring;
Query1.Close;
if strtoint(news_month) < 10 then
news_month := '0' + news_month;
if strtoint(news_day) < 10 then
news_day := '0' + news_day;
if strtoint(news_hour) < 10 then
news_hour := '0' + news_hour;
if strtoint(news_minute) < 10 then
news_minute := '0' + news_minute;
if strtoint(news_second) < 10 then
news_second := '0' + news_second;
news_update := news_year + news_month + news_day + news_hour + news_minute + news_second ;
if news_body_post <> '' then
news_body := news_body + ' # ' + news_body_post;
total_news := 'S' + '|' + trim(news_update) + '|' + trim(news_title) + '|' + trim(news_body) + '|' + trim(news_offer) + '|' + 'E';
if pre_id <> news_id then
begin
edit1.text := '클라이언트에게 자료를 전송하고 있습니다..';
pre_id := news_id;
Serversocket1.socket.Connections[0].SendText(total_news);
end;
end;
timer1.Interval := 3000;
end;