SDAC의 MSConnection에서는 문제가 생기지 않는데 ADOExpress(dbGo)에서는 문제가 생긴다는 말씀이신가요.
보여주신 코드만으로는 그런 경우가 생길 수가 없을 것 같습니다만..
다만, 이런 가능성은 있을 수 있을 것 같네요.
MS SQL 서버 2005는 이름 그대로 2005년에 발표되었습니다. 반면 델파이 7은 2002년에 발표된 제품입니다. 따라서 델파이 7에 포함된 ADOExpress 버전도 당연히 SQL 서버 2005에 대한 대비가 되어 있지 않습니다. 물론 MS에서 SQL 서버 2005가 데이터베이스 연결 및 액세스 등에서 하위 호환성을 가지도록 설계했기 때문에 SQL 서버 2000에서 돌아간다면 2005 버전에서도 대부분 돌아가기는 하지만, 그 호환성의 정도가 100%라고 할 수는 없을 것입니다. 따라서 사용하시는 델파이의 버전이 SQL 서버의 버전보다 오래된 이유로 문제가 생겼을 가능성이 있습니다.
또, 저번 질문에서는 SDAC 3.7 버전을 사용했다고 말씀하셨는데, SDAC 3.7의 경우는 윈도우 비스타가 나오기 전의 버전이기 때문에 비스타와 호환되지 않는 부분이 있을 가능성이 있습니다. 현재 SDAC의 최신 버전은 4.5입니다. 또 3.7이 SQL 서버 2005를 지원한 첫 버전이기 때문에, SQL 서버 2005에 대한 지원 부분에 버그가 있었을 가능성도 있습니다. (게다가 3.7 안에서도 더 세부 버전마다 SQL 서버 2005에 대한 지원이 계속 추가되었으므로, 3.7.x 버전의 x 버전에 따라 문제가 있을 수도 없을 수도 있습니다)
SDAC 방법을 다시 사용할 것이라면, 최신 버전이나, 최소한 4.0 버전을 사용하시길 권합니다. SDAC 4.0 버전은 제가 바로 지난달까지 SQL 서버 2000/2005/2008을 모두 지원하는 성능관리툴을 개발하면서 사용했던 버전입니다. 제가 데이터베이스 성능 관리툴을 개발하면서 사용한 테크닉들은 일반적인 데이터베이스 개발, 즉 SI 업무 개발에서 사용하는 것보다는 훨씬 고급의 기술들이라고 할 수 있고, 그 작업에서 기능적으로 별다른 문제가 없었던 버전이었습니다.
그럼...
신철우 님이 쓰신 글 :
: 델7에서 MSSQL2005를 MSConnection으로 연결하여 MSQuery로 조회하면 제대로 나오던 결과값이 비스타 지원을 위해 ADOConnection으로 연결하여 ADOQuery를 사용하였더니 레코드가 0으로 나오는 경우가 생겨서요.
:
: 아래와 같이 ADOQuery를 여러번 반복하여 사용하면 처음 3개 정도는 값이 나오다가 그 뒤에 아나오다, 또 나오다가 하는데 미치겠어요.
:
: with qryTemp do
: begin
: close;
: sql.text := 'select * from student where regdate <= ''2008-06-20''';
: open;
: end;
: new := qryTemp.RecordCount;
:
: with qryTemp do
: begin
: close;
: sql.text := 'select * from student where enddate <= ''2008-06-20''';
: open;
: end;
: out := qryTemp.RecordCount;
: .
: .
: .
: =끝=
|