자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi FireDAC MS SQL Table 접속 문의
2020.02.03 17:04
안녕하세요.
Win7 O/S 환경에서 하기 SQL 쿼리 전송시
SELECT date, LineCode, ModelCode, Round(AVG(TargetTactTime), 2) As finzeTt
FROM dbo.MESProdOnTime
WHERE date = :date and linecode = :LineCode
GROUP BY date, LineCode, ModelCode
ORDER BY ModelCode
unQueryList.ParamByName('date').AsDate := Now;
unQueryList.ParamByName('LineCode').AsString := 'S033';
unQueryList.Active := True;
아래와 같은 에러가 발생 합니다.
[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver]Optional feature not implemented.
date 컬럼 Tpye이 date 경우 Time stamp 변환에 문제라고 하는데 해결 방법을 모르겠네요.
Win7 O/S 환경 모든 PC에 문제는 아니고 특정 PC에서만 발생 합니다.
조건식에 date 제외 시키면 조회 됩니다.
Delphi FireDAC MS SQL Table 접속 문의
2020.02.03 17:04
안녕하세요.
Win7 O/S 환경에서 하기 SQL 쿼리 전송시
SELECT date, LineCode, ModelCode, Round(AVG(TargetTactTime), 2) As finzeTt
FROM dbo.MESProdOnTime
WHERE date = :date and linecode = :LineCode
GROUP BY date, LineCode, ModelCode
ORDER BY ModelCode
unQueryList.ParamByName('date').AsDate := Now;
unQueryList.ParamByName('LineCode').AsString := 'S033';
unQueryList.Active := True;
아래와 같은 에러가 발생 합니다.
[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver]Optional feature not implemented.
date 컬럼 Tpye이 date 경우 Time stamp 변환에 문제라고 하는데 해결 방법을 모르겠네요.
Win7 O/S 환경 모든 PC에 문제는 아니고 특정 PC에서만 발생 합니다.
조건식에 date 제외 시키면 조회 됩니다.
우선 재현이 불가해 재한된 답변을 드립니다. 양해 부탁드립니다.
2가지 정도의 점검 방안이 생각나 안내드립니다.
1) SQL Server 클라이언트 라이브러리 버전 별 이슈 발생 확인
2) TimeStamp 문제라면, date 파라메터의 데이터 타입을 명시적으로 지정
1) 클라이언트 라이브러리 버전 별 이슈 발생 확인
일부 환경에서 문제가 발생한다면, 환경적인 요인을 의심해 봐야합니다.
해당 이슈와 가장 밀접한 사항이 SQL Server의 클라이언트 라이브러리의 차이입니다.
일반적으로 클라이언트 라이브러리도 버전별로 기능의 차이가 있습니다.
같은 기능도 구현의 차이가 있어 버전별로 오류가 발생할 수 있을 것 같습니다.
SQL Server의 클라이언트 라이브러리는 대부분 윈도우내 또는 다른 프로그램 설치 시 시스템경로 등에 설치됩니다.
정상적으로 동작하는 PC의 시스템 경로(C:\Windows\SysWOW64 또는 C:\Windows\System32:, 32비트 시스템 경로)에서 odbc32.dll을 찾아 문제가 발생하는 PC의 위 프로젝트의 실행파일과 동일한 경로에 배포 후 테스트 해보시기 바랍니다.
만약, 문제가 해결되었다면 배포시에도 실행파일과 같은 경로에 odbc32.dll을 함께 배포하는 것이 좋습니다.
클라이언트 라이브러리 관련 설명은 다음 링크를 살펴보시기 바랍니다.
http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_Microsoft_SQL_Server_(FireDAC)
2) 파라메터 데이터 타입 명시적으로 지정
다음 링크의 내용도 말씀하신 TimeStamp 변환을 안내 합니다.
https://www.ibm.com/support/pages/error-number-27-microsoftodbc-sql-server-driveroptional-feature-not-implemented
위 내용이 맞다면 다음과 같은 시도를 진행해 보시기 바랍니다.
파라메터 값 설정 시 명시적으로 TimeStamp로 데이터 타입으 지정해 테스트 보시기 바랍니다.
var
Param: TFDParam;
begin
Param := FDQuery1.ParamByName('DATE');
Param.DataType := ftTimeStamp;
// Param.DataType := ftDate;
Param.AsDate := Now;
위 내용으로 점검해도 해결이 되지 않을 수 있습니다. 위와 같은 방향으로 다양한 방법으로 이슈 확인 및 점검해보시기 바랍니다.
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)