Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

[DocWiki 번역] DBMS 환경 리포트 (FireDAC)


Recommended Posts

Docwiki에 있는 "DBMS Environment Reports (FireDAC)"를 번역한 글 (번역일: 2022년 3월 10일)

위로 가기: [DocWiki 번역] 디버깅 및 기술 지원 (FireDAC)

이 주제는 FireDAC에서 데이터베이스 관리 시스템 (DBMS) 안에 있는 옵션들을 점검하고 리포팅하는 여러 기능을 안내한다. 
FireDAC 리포트 기능에 사용자의 환경에 필요한 모든 정보를 리포팅하는 메소드(들)이 있기 때문에, 고객, 개발자, 고객 지원 담당자가 문제를 식별하고 해결하는데 들이는 시간을 크게 절감할 수 있다. 

FireDac으로 할 수 있는 것들:

  • FDExplorer 또는 FDAdministrator를 사용하여---영속 연결 정의에 대한 리포트를 얻을 수 있다. 
  • 개발 화면에서 TFDConnection Editor를 사용하여---연결 정의에 대한 상세 리포트를 얻을 수 있다.
  • 코드를 사용하여--델파이 코드를 사용하여 리포팅 기능을 당신의 애플리케이션 안에 구현할 수 있다.

대체로, DBMS 애플리케이션이 실패하는 이유는 다음과 같다:

  • DBMS 클라이언트 라이브러리가 없음.
  • 잘못된 DBMS 버전 (클라이언트, 서버, 또는 둘다)
  • 잘못된 연결 정의 설정
  • 유니코드 지원 등 호환성 이슈

FireDAC에 있는 점검과 리포팅 옵션은 문제의 원천을 적시에 식별하는데 도움이 된다.

목차


FDExplorer 사용하기 (Using FDExplorer)

FDExplorer 유틸리티는 영속 연결 정의(persistent connection definition)를 관리할 때 주로 사용하는 도구이다.

영속 연결 정의(persistent connection definition)에 대한 상세 리포트를 얻으려면, FDExplorer를 실행하고, 왼쪽에 있는 트리뷰에서 연결 정의를 하나 선택한다. 해당 connection(연결)에 대한 상제 정보를 보려면 오른쪽에 있는 Info 페이지 탭을 클릭한다.

연결 정의 리포트는 다음 구역들로 구성되어 있다.

  • Connection definition parameters--연결 정의 파라미터 전체 집합
  • FireDAC info--사용 중인 FireDAC 빌드에 대한 상세 정보
  • Client info--(사용 중인 DBMS 클라이언트 소프트웨어가 올바로 설치되어 있어서 클라이언트를 FireDAC이 로딩할 수 있다면) 해당 DBMS 클라이언트 소프트웨어의 정보를 가져올 수 있다. (올바로 설치되지 않았으면) 실패 오류 메시지를 받게 된다.
  • Session info--(연결을 FireDAC이 성공적으로 오픈할 수 있다면) DBMS 서버와 해당 사용자 세션에 대한 정보를 가져온다. (오픈하지 못하면) 실패 오류 메시지를 받게 된다.

아래 그림은 SQLite 연결 정의를 보여준다. 이 경우, SQLite의 클라이언트 소프트웨어가 로딩되고 연결이 활성화되어 있다고 표시된다.
Reports1.png그림. FDExplorer에서 DBMS 환경 리포트 보기

 

개발 화면에서 TFDConnection Editor를 사용하기 (Using the TFDConnection Design Time Editor)

TFDConnection Editor는 Connection(연결)의 임시 파라미터를 관리하는 환경이다. 개발 화면에서 TFDConnection 컴포넌트를 더블-클릭하면, FireDAC 패키지에 의해 Connection Editor 창이 나타난다.

연결 정의에 대한 상제 리포트를 얻으려면, 앞에서 설명한 바와 같이, Info 탭을 클릭한다. 

주의: 만약 TFDConnection 컴포넌트에 Connection(연결)이 설정되어 있지 않으면, Connection Editor 창은 서버에 있는 DBMS의 데이터를 가져오기 위해 임시 연결을 시도한다.

 

델파이 코드 사용하기 (Using Delphi Code)

 

TFDConnection.GetInfoReport 메소드를 호출하여 직접 DBMS 대한 리포트를 얻을  있다.

procedure TMainForm.Button1Click(Sender: TObject);
begin
  FDConnection1.GetInfoReport(mmInfo.Lines);
end;

이 메소드 선언은 다음과 같다:

procedure GetInfoReport(AList: TStrings; AItems: TFDInfoReportItems);

AItems 플래그에 들어가는 값들은 다음과 같다.

  • riConnDef--연결 정의 파라미터 (connection definition parameters)를 리포트에 포함한다.
  • riFireDAC--FireDAC 빌드 정보를 리포트에 포함한다.
  • riClientLog--include DBMS client loading log.를 리포트에 포함한다.
  • riClient--DBMS 클라이언트 정보를 리포트에 포함한다.
  • riSessionHints--FireDAC, DBMS 클라이언트, DBMS 서버의 호환성 문제를 리포트에 포함한다.
  • riSession--DBMS 세션 정보를 리포트에 포함한다.
  • riTryConnect--연결이 되어 있지 않으며, DBMS 연결을 시도한다.
  • riKeepConnected--이 메소드에서 연결을 설정하고 나면, 계속 유지한다.
  • AList--타겟 문자열 목록을 리포트에 덛붙인다.

<FireDAC>\Samples\Comp Layer\TFDConnection\InfoReport demo project 를 참고하자.

 

FireDAC 빌드 번호 얻기 (Getting the FireDAC Build Number)

(예를 들어, About 창에) FireDAC 빌드 번호를 표시하고 싶다면, FireDAC.Stan.Const 유닛에 있는 C_FD_Version를 참조한다. 예를 들어, 

C_FD_Version = '8.0.5 (Build 3365)';

 

DBMS 버전 얻기 (Getting the DBMS version)

DBMS 클라이언트 와(/또는) 서버의 버전 번호를 얻으려면 (예를 들어, 애플리케이션 안에서 이 기능을 켜거나 끌 수 있도록 하려면) TFDConnection을 사용하여 연결을 오픈하고 아래에 있는 샘플 코드를 사용한다. 물리적인 데이터베이스의 메타데이터를 어떻게 접근하는 지를 알 수 있다.

procedure TMainForm.Button2Click(Sender: TObject);
var
  oMetaIntf: IFDPhysConnectionMetadata;
begin
  // 클라이언트와 서버의 버전 얻어내기
  oMetaIntf := FDConnection1.ConnectionMetaDataIntf;
  try
    ShowMessage(Format('Client version: %.10d; Server version: %.10d',
      [oMetaIntf.ClientVersion, oMetaIntf.ServerVersion]));
  finally
    oMetaIntf:= nil; // 연결을 닫기 전에 항상 이 인터페이스를 해제해야 한다
  end;
end;

FireDAC.Stan.Const 유닛에는 많은 DBMS 버전 번호가 사전에 정의되어 들어있다.

  • cvOracleXXX--Oracle용
  • mvMySQLXXX--MySQL용
  • svMSSQLXXX--MSSQL용
  • svSQLiteXXX--SQLite용
  • svPGSQLXXX--PostgreSQL용
  • ivIBXXX--InterBase용
  • ivFBXXX--Firebird용

FireDAC은 DBMS 버전을 나타낼 때 숫자 그룹 5개로 구성된 하나의 LongWord 값을 사용한다, 각 그룹은 2자리 숫자로 되어 있다 (가장 왼쪽 그룹은 1 자리 숫자일 수도 있다) 따라서 상수를 바로 비교할 수 있다.

예를 들어, mvMySQL032321 = 0323210000 라면, 버전은 3.23.21.0.0 이다.

if oMetaIntf.ServerVersion >= mvMySQL050000 then begin
  // MySQL 5.0 또는 보다 상위 버전에 해당하는 SQL을 실행
end
else begin
  // MySQL 5.0 이전의 SQL을 실행
end;

 

기타 자료

 

예제

  • <FireDAC>\Samples\Comp Layer\TFDConnection\InfoReport
이 댓글 링크
다른 사이트에 공유하기

On 2022. 3. 11. at 오전 8시 43분, 어드민 said:

예제

  • <FireDAC>\Samples\Comp Layer\TFDConnection\InfoReport

샘플 예제 전체 경로 :  "C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Object Pascal\Database\FireDAC\Samples\Comp Layer\TFDConnection\InfoReport"

기본제공 되는 샘플은 Local Database 인 SQLite 로 실행 됩니다.

MySQL 서버로 바꾸어서 실행한 샘플 화면 입니다.

서버에서 제공되는 버전과  비교해 본 결과 정상 출력 됨이 확인 되고 눈 여겨 봐야 할 부분은 My SQL 클라이언트 DLL 화일 정보입니다.

앱 빌드후 배포시에 개발환경에서 사용한 dll 과 다른 dll 화일을 배포하여 문제가 되는 경우가 상당히 많습니다.

버전이 달라도 화일명이 동일하기 때문에 눈으로는 구별이 안되므로 실제 개발환경에서 사용한 dll 화일을 확인해 보는 용도로 유용 합니다.ser.pngcc.png

 

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.