IBM Db2 구독자

적용 대상:SQL Server

SQL Server 는 Microsoft Host Integration Server와 함께 제공되는 OLE DB 공급자를 통해 IBM Db2/AS 400, DB2/MVS 및 DB2/Universal Database에 대한 밀어넣기 구독을 지원합니다.

IBM Db2 구독자 구성

IBM Db2 구독자를 구성하려면 다음 단계를 따르십시오.

  1. 배포자에 최신 버전의 Microsoft OLE DB Provider for DB2를 설치합니다.

    • SQL Server Enterprise Edition를 사용 중이라면, SQL Server 다운로드 웹페이지의 관련 다운로드 섹션에서 Microsoft SQL Server 기능 팩 최신 버전을 선택하세요. Microsoft SQL Server 기능 팩 웹페이지에서 DB2용 OLE DB 제공자를 검색하세요.

    • SQL Server Standard Edition을 사용 중이라면, 제공자가 포함된 최신 버전의 Microsoft Host Integration Services(HIS) 서버를 설치하세요.

    제공자 설치 외에도, 다음 단계에서 사용하는 데이터 액세스 도구를 설치하세요. 이 도구는 SQL Server Enterprise Edition을 다운로드하면 기본적으로 함께 설치됩니다. 데이터 액세스 도구 설치 및 사용에 대한 자세한 정보는 공급자 설명서 또는 HIS 설명서를 참조하세요.

  2. 구독자에 대한 연결 문자열 만듭니다. 연결 문자열은 어떤 텍스트 편집기에서든 만들 수 있지만, 데이터 액세스 도구를 사용해야 합니다. 데이터 액세스 도구에서 문자열을 만들려면 다음과 같이 합니다.

    1. 시작, 프로그램, DB2용 OLE DB 프로바이더를 선택한 후 데이터 접근 도구를 선택하세요.

    2. 데이터 액세스 도구에서 단계에 따라 DB2 서버에 대한 정보를 제공합니다. 도구를 완료하면 해당 연결 문자열과 연결된 범용 데이터 링크(UDL)가 생성됩니다. UDL은 복제에서 사용되지 않지만, 연결 문자열은 사용됩니다.

    3. 연결 문자열에 액세스합니다. 데이터 액세스 도구에서 UDL을 마우스 오른쪽 단추로 클릭하고 연결 문자열 표시를 선택합니다.

      연결 문자열은 다음과 유사하며(가독성을 위해 줄 구분이 있습니다):

    Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252;  
    PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL;  
    Default Schema=MY_SCHEMA;Process Binary as Character=False;Derive Parameters=False;Units of Work=RUW;DBMS Platform=DB2/NT;  
    Persist Security Info=False;Connection Pooling=True;  
    

    문자열에 있는 대부분의 옵션은 현재 구성 중인 DB2 서버에 따라 다르지만, Derive Parameters 및 False 옵션은 항상 Process Binary as Character로 설정해야 합니다. 구독 데이터베이스를 식별하는 옵션에 대한 Initial Catalog 값을 제공해야 합니다. 구독을 생성할 때 새 구독 마법사에 연결 문자열을 입력하세요.

  3. 스냅샷 또는 트랜잭션 게시를 만들고, 비 SQL Server 구독자에 사용할 수 있도록 설정한 다음, 구독자에 대한 푸시 구독을 만듭니다. 자세한 내용은 SQL Server가 아닌 구독자에 대한 구독 만들기를 참조하세요.

  4. 필요에 따라 하나 이상의 문서에 대한 사용자 지정 만들기 스크립트를 지정합니다. 테이블이 게시되면 해당 테이블에 대한 CREATE TABLE 스크립트가 만들어집니다. 비SQL Server 구독자의 경우, Transact-SQL 방언으로 스크립트를 만들고, 배포 에이전트가 이를 더 일반적인 SQL 방언으로 번역한 후 구독자에게 적용합니다. 커스텀 생성 스크립트를 지정하려면 기존 Transact-SQL 스크립트를 수정하거나 DB2 SQL 방언을 사용하는 완전한 스크립트를 생성하세요. DB2 스크립트를 만들 때는 bypass_translation 지시어를 사용해 배포 에이전트가 번역 없이 구독자에게 스크립트를 적용하도록 하세요.

    스크립트를 수정할 수 있는 이유는 여러 가지지만, 가장 흔한 이유는 데이터 타입 매핑을 변경하는 것입니다. 자세한 내용은 이 글의 "데이터 타입 매핑 고려사항" 섹션을 참조하세요. Transact-SQL 스크립트를 수정할 경우, 데이터 타입 매핑 변경에만 제한하고 코멘트는 포함하지 마세요. 더 큰 변화가 필요하다면 DB2 스크립트를 만드세요.

    문서 스크립트를 수정하여 사용자 지정 생성 스크립트로 제공하려면

    1. 출판물에 대한 스냅샷이 생성된 후, 출판물의 스냅샷 폴더로 이동합니다.

    2. .sch와 같이 문서와 이름이 같은 MyArticle.sch 파일을 찾습니다.

    3. 메모장이나 다른 텍스트 편집기로 이 파일을 열어보세요.

    4. 파일을 수정하고 다른 디렉터리에 저장합니다.

    5. creation_script 속성에 대한 파일 경로와 이름을 지정하여 sp_changearticle을 실행합니다. 자세한 정보는 sp_changearticle(Transact-SQL)을 참조하세요.

    문서 스크립트를 만들고 이를 사용자 지정 생성 스크립트로 제공하기

    1. Db2 SQL 방언을 사용해 기사 스크립트를 작성하세요. 파일의 첫 번째 줄이 bypass_translation이고, 해당 줄에는 그 외 아무 내용도 없는지 확인합니다.

    2. creation_script 속성에 파일 경로 및 이름을 지정하여 sp_changearticle을 실행합니다.

IBM Db2 구독자에 대한 고려 사항

비SQL Server 구독자 관련 항목에서 다룬 고려사항 외에도, Db2 구독자에게 복제할 때 다음과 같은 문제들을 고려하세요:

  • 복제된 각 테이블의 데이터와 인덱스는 Db2 테이블스페이스에 할당됩니다. Db2 테이블스페이스의 페이지 크기는 테이블스페이스에 속하는 최대 열의 수와 최대 행 크기를 결정합니다. 복제된 테이블과 연결된 테이블스페이스가 복제된 열 수와 테이블의 최대 행 크기에 따라 적절한지 확인합니다.

  • 테이블 내 하나 이상의 주요 키 열이 DECIMAL(32-38, 0-38) 또는 NUMERIC(32-38, 0-38) 데이터 타입일 경우, 트랜잭션 복제를 사용하여 테이블을 Db2 구독자에게 게시하지 마세요. 트랜잭션 복제는 주 키를 사용하여 행을 식별합니다. 이 방법은 이러한 데이터 타입이 가입자의 VARCHAR(41)에 매핑되어 있기 때문에 실패를 초래할 수 있습니다. 스냅샷 복제를 통해 이러한 데이터 타입을 사용하는 기본 키가 있는 테이블을 게시할 수 있습니다.

  • 테이블을 복제가 생성하도록 하는 대신 구독 서버에서 만들려면 복제 지원 전용 옵션을 사용하세요. 자세한 정보는 스냅샷 없이 트랜잭션 구독 초기화를 참조하세요.

  • SQL Server는 Db2보다 더 긴 테이블 이름과 열명을 허용합니다:

    • 게시 데이터베이스에 구독자의 Db2 버전에서 지원되는 것보다 긴 이름의 테이블이 포함되어 있으면 destination_table 아티클 속성에 대체 이름을 지정하세요. 게시물을 만들 때 속성을 설정하는 방법에 대한 자세한 정보는 게시 만들기 및 문서 정의를 참조하세요.

    • 대체 열 이름을 지정할 수 없습니다. 게시된 테이블에 Db2 버전에서 지원하는 것보다 긴 열명이 포함되지 않도록 Subscriber에서 확인하세요.

SQL Server에서 IBM Db2로의 데이터 타입 매핑

다음 표에서는 IBM Db2를 실행하는 구독자에 데이터가 복제될 때 사용되는 데이터 형식 매핑을 보여 줍니다.

SQL Server 데이터 형식 IBM Db2 데이터 형식
bigint DECIMAL(19,0)
binary(1-254) BIT DATA의 경우 CHAR(1-254)
binary(255-8000) VARCHAR(255-8000) BIT 데이터용
bit SMALLINT
char(1-254) CHAR(1-254)
char(255-8000) VARCHAR(255-8000)
date 날짜
datetime TIMESTAMP
datetime2(0-7) VARCHAR(27)
datetimeoffset(0-7) VARCHAR(34)
decimal(1-31, 0-31) DECIMAL(1-31, 0-31)
decimal(32-38, 0-38) VARCHAR(41)
float(53) 배정밀도
float 플로트
geography 이미지
geometry 이미지
hierarchyid 이미지
image VARCHAR(0) 비트 데이터용*
으로 INT
money DECIMAL(19,4)
nchar(1-4000) VARCHAR(1-4000)
ntext VARCHAR(0)*
숫자(1-31, 0-31) DECIMAL(1-31,0-31)
숫자(32-38, 0-38) VARCHAR(41)
nvarchar(1-4000) VARCHAR(1-4000)
nvarchar(max) VARCHAR(0)*
실제 REAL
smalldatetime TIMESTAMP
smallint SMALLINT
smallmoney DECIMAL(10,4)
sql_variant 해당 없음
sysname VARCHAR(128)
text VARCHAR(0)*
time(0-7) VARCHAR(16)
timestamp 비트 데이터의 경우 CHAR(8)
tinyint SMALLINT
uniqueidentifier CHAR (38)
varbinary(1-8000) 비트 데이터용 VARCHAR(1-8000)
varchar(1-8000) VARCHAR(1-8000)
varbinary(max) VARCHAR(0) 비트 데이터용*
varchar(max) VARCHAR(0)*
xml VARCHAR(0)*
  • VARCHAR(0) 매핑 관해 자세한 정보는 다음 섹션을 참조하세요.

데이터 타입 매핑 고려사항

DB2 구독자에 복제할 때 다음과 같은 데이터 형식 매핑 문제를 고려합니다.

  • SQL Server char, varchar, binary, varbinary를 각각 Db2 CHAR,VARCHAR, CHAR for BIT DATA, VARCHAR for BIT DATA에 매핑할 때, 복제는 DB2 데이터 타입의 길이를 SQL Server 타입과 동일하게 설정합니다.

    이 방식은 DB2 페이지 크기 제약 조건이 최대 행 크기를 수용할 만큼 충분히 크면 생성된 테이블을 Subscriber에서 성공적으로 생성할 수 있게 해줍니다. Db2 데이터베이스에 접근할 때 사용하는 로그인 계정이 복제할 테이블에 충분한 크기의 테이블 공간에 접근할 권한이 있는지 확인하세요.

  • DB2는 최대 32킬로바이트(KB)의 VARCHAR 열을 지원합니다; 따라서 일부 SQL Server의 큰 객체 열은 DB2 VARCHAR 열에 적절히 매핑할 수 있습니다. 하지만 복제가 DB2에 사용하는 OLE DB 제공자는 SQL Server의 큰 객체를 DB2 큰 객체로 매핑하는 것을 지원하지 않습니다. 이 때문에 생성된 생성 스크립트에서 SQL Server 텍스트, varchar(max),ntext, nvarchar(max) 열이 VARCHAR(0)로 매핑됩니다. 스크립트를 Subscriber에게 적용하기 전에 길이 값 0을 적절한 값으로 변경해야 합니다. 데이터 타입 길이를 변경하지 않으면, DB2 서브스크라이버에서 테이블 생성 시도 시 오류 604가 발생한다(오류 604는 데이터 타입의 정밀도 또는 길이 속성이 유효하지 않음을 나타낸다).

    복제하려는 소스 테이블에 대한 지식을 바탕으로, SQL Server의 큰 객체를 가변 길이의 DB2 항목에 매핑하는 것이 적절한지 판단하고, 맞춤 생성 스크립트에서 적절한 최대 길이를 지정하세요. 맞춤형 생성 스크립트 지정에 관한 정보는 이 글의 "IBM Db2 구독자 구성 하기" 섹션 5단계를 참조하세요.

    참고

    DB2 유형에 지정된 길이는 다른 열 길이와 결합될 때, 테이블 데이터가 할당된 DB2 테이블 공간에 기반한 최대 행 크기를 초과할 수 없습니다.

    큰 객체 열에 적합한 매핑이 없다면, 해당 열이 복제되지 않도록 문서 내에서 열 필터링을 고려해 보세요. 자세한 정보는 게시된 데이터 필터링을 참조하세요.

  • SQL Server nchar와 nvarchar를 DB2 CHAR와 VARCHAR로 복제할 때, 복제는 SQL Server 타입과 동일한 길이 지정자를 DB2 타입에 사용합니다. 하지만 생성된 DB2 테이블에 비해 데이터 타입 길이가 너무 작을 수 있습니다.

    일부 DB2 환경에서는 SQL Server 문자 항목이 단일 바이트 문자에 제한되지 않습니다; CHAR 또는 VARCHAR 항목의 길이는 이 조건을 고려해야 합니다. 필요한 경우 Shift In 문자와 Shift Out 문자도 함께 고려해야 합니다. nchar와 nvarchar 열로 테이블을 복제한다면, 커스텀 생성 스크립트에서 데이터 타입의 최대 길이를 더 크게 지정해야 할 수도 있습니다. 맞춤형 생성 스크립트 지정에 관한 정보는 이 글의 "IBM Db2 구독자 구성 하기" 섹션 5단계를 참조하세요.