다음을 통해 공유


IBM DB2 구독자

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를 설치합니다.

    • Microsoft SQL Server 2012 Enterprise를 사용하는 경우 SQL Server 2008 다운로드 웹 페이지의 관련 다운로드 섹션에서 최신 버전의 Microsoft SQL Server 2008 기능 팩에 대한 링크를 클릭합니다. Microsoft SQL Server 2008 기능 팩 웹 페이지에서 Microsoft OLE DB Provider for DB2를 검색합니다.

    • SQL Server 2012 Standard를 사용하는 경우 공급자를 포함하는 HIS(Microsoft Host Integration Services) 서버의 최신 버전을 설치합니다.

    공급자를 설치하는 것 외에도 다음 단계에서 사용되는 데이터 액세스 도구를 설치하는 것이 좋습니다(SQL Server 2012 Enterprise용 다운로드와 함께 기본적으로 설치됨). 데이터 액세스 도구 설치 및 사용에 대한 자세한 내용은 공급자 설명서 또는 HIS 설명서를 참조하세요.

  2. 구독자에 대한 연결 문자열을 만듭니다. 연결 문자열은 모든 텍스트 편집기에서 만들 수 있지만 데이터 액세스 도구를 사용하는 것이 좋습니다. 데이터 액세스 도구에서 문자열을 만들려면 다음을 수행합니다.

    1. 시작, 프로그램, Microsoft OLE DB Provider for DB2, 데이터 액세스 도구를 차례로 클릭합니다.

    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;Units of Work=RUW;DBMS Platform=DB2/NT;  
    Persist Security Info=False;Connection Pooling=True;  
    

    문자열의 대부분의 옵션은 구성 중인 DB2 서버와 관련이 있지만 Process Binary as Character 옵션은 항상 로 False설정해야 합니다. 구독 데이터베이스를 식별하는 옵션에는 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. MyArticle.sch와 같이 아티클과 이름이 같은 .sch 파일을 찾습니다.

    3. 메모장 또는 다른 텍스트 편집기를 사용하여 이 파일을 엽니다.

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

    5. sp_changearticle 실행하고 creation_script 속성의 파일 경로와 이름을 지정합니다. 자세한 내용은 sp_changearticle(Transact-SQL)를 참조하세요.

    아티클 스크립트를 만들고 사용자 지정 만들기 스크립트로 제공하려면

    1. DB2 SQL 언어를 사용하여 아티클 스크립트를 만듭니다. 파일의 첫 번째 줄이 bypass_translation 줄에 다른 줄이 없는지 확인합니다.

    2. sp_changearticle 실행하고 creation_script 속성의 파일 경로와 이름을 지정합니다.

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 버전에서 지원되는 열 이름보다 긴 열 이름이 포함되지 않도록 해야 합니다.

SQL Server에서 IBM DB2로 데이터 형식 매핑

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

SQL Server 데이터 형식 IBM DB2 데이터 형식
bigint DECIMAL(19,0)
binary(1-254) CHARACTER(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 타임 스탬프
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) FOR BIT DATA1
into INT
money DECIMAL(19,4)
nchar(1-4000) VARCHAR(1-4000)
ntext VARCHAR(0)1
numeric(1-31, 0-31) DECIMAL(1-31,0-31)
numeric(32-38, 0-38) VARCHAR(41)
nvarchar(1-4000) VARCHAR(1-4000)
nvarchar(max) VARCHAR(0)1
real 진짜
smalldatetime 타임 스탬프
smallint SMALLINT
smallmoney DECIMAL(10,4)
sql_variant 해당 없음(N/A)
sysname VARCHAR(128)
text VARCHAR(0)1
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) FOR BIT DATA1
varchar(max) VARCHAR(0)1
xml VARCHAR(0)1

1 VARCHAR(0)에 매핑하는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.

데이터 형식 매핑 고려 사항

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

  • SQL Server char, varchar, binaryvarbinary를 DB2 CHAR, VARCHAR, CHAR FOR BIT DATA 및 VARCHAR FOR BIT DATA에 각각 매핑할 때, SQL Server 복제는 DB2 데이터 형식의 길이를 SQL Server 형식의 길이와 동일하게 설정합니다.

    이렇게 하면 DB2 페이지 크기 제약 조건이 행의 최대 크기를 수용할 수 있을 만큼 충분히 큰 경우 생성된 테이블을 구독자에서 성공적으로 만들 수 있습니다. DB2 데이터베이스에 액세스하는 데 사용되는 로그인에 DB2로 복제되는 테이블에 충분한 크기의 테이블 공간에 액세스할 수 있는 권한이 있는지 확인합니다.

  • DB2는 32KB(KB)의 VARCHAR 열을 지원할 수 있습니다. 따라서 일부 SQL Server 큰 개체 열을 DB2 VARCHAR 열에 적절하게 매핑할 수 있습니다. 그러나 복제에서 DB2에 사용하는 OLE DB 공급자는 SQL Server 큰 개체를 DB2 큰 개체에 매핑하는 것을 지원하지 않습니다. 이러한 이유로 SQL Servertext, varchar(max)ntextnvarchar(max) 열은 생성된 만들기 스크립트에서 VARCHAR(0)에 매핑됩니다. 구독자에 스크립트를 적용하기 전에 길이 값 0을 적절한 값으로 변경해야 합니다. 데이터 형식 길이가 변경되지 않으면 DB2 구독자에서 테이블 만들기를 시도할 때 DB2에서 오류 604가 발생합니다(오류 604는 데이터 형식의 전체 자릿수 또는 길이 특성이 유효하지 않음을 나타낸다).

    복제 중인 원본 테이블에 대한 지식을 바탕으로 SQL Server 큰 개체를 가변 길이 DB2 항목에 매핑하는 것이 적절한지 확인하고 사용자 지정 만들기 스크립트에서 적절한 최대 길이를 지정합니다. 사용자 지정 만들기 스크립트를 지정하는 방법에 대한 자세한 내용은 이 항목의 "IBM DB2 구독자 구성" 섹션의 5단계를 참조하세요.

    비고

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

    큰 개체 열에 대한 적절한 매핑이 없는 경우 열이 복제되지 않도록 아티클에서 열 필터링을 사용하는 것이 좋습니다. 자세한 내용은 게시된 데이터 필터링을 참조하세요.

  • SQL Server ncharnvarchar을(를) DB2 CHAR 및 VARCHAR로 복제할 때 복제는 SQL Server 유형에 사용된 것과 같은 길이 지정자를 DB2 형식에 사용합니다. 그러나 생성된 DB2 테이블에 대해 데이터 형식 길이가 너무 작을 수 있습니다.

    일부 DB2 환경에서는 SQL Server char 데이터 항목이 싱글바이트 문자로 제한되지 않으며 CHAR 또는 VARCHAR 항목의 길이를 고려해야 합니다. 필요한 경우 시프트 인시프트 아웃 문자를 고려해야 합니다. 테이블 ncharnvarchar 열을 복제하는 경우 사용자 지정 만들기 스크립트에서 데이터 형식의 최대 길이를 더 크게 지정해야 할 수 있습니다. 사용자 지정 만들기 스크립트를 지정하는 방법에 대한 자세한 내용은 이 항목의 "IBM DB2 구독자 구성" 섹션의 5단계를 참조하세요.

또한 참조하십시오

SQL Server 이외 구독자
게시 구독