다음을 통해 공유


IBM DB2 Subscribers

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. creation_script 속성에 파일 경로 및 이름을 지정하여 sp_changearticle을 실행합니다. 자세한 내용은 sp_changearticle(Transact-SQL)를 참조하세요.

    아티클 스크립트를 만들어서 사용자 지정 생성 스크립트로 제공하려면

    1. DB2 SQL 언어를 사용하여 아티클 스크립트를 만듭니다. 파일의 첫 줄에는 bypass_translation만 있어야 합니다.

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

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

DB2 구독자로 복제할 때 Non-SQL Server Subscribers항목에서 다룬 고려 사항은 물론 다음 사항도 고려해야 합니다.

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

  • 테이블에 있는 하나 이상의 기본 키 열이 DECIMAL(32-38, 0-38) 또는 NUMERIC(32-38, 0-38) 데이터 형식이면 트랜잭션 복제를 사용하여 테이블을 DB2 구독자로 게시해서는 안 됩니다. 트랜잭션 복제에서는 기본 키를 사용하여 행을 식별하는데 이 데이터 형식은 구독자에서 VARCHAR(41)로 매핑되므로 오류가 발생할 수 있습니다. 기본 키에서 이러한 데이터 형식을 사용하는 테이블은 스냅샷 복제를 사용하여 게시할 수 있습니다.

  • 복제에서 테이블을 만드는 대신 구독자에서 테이블을 미리 만들려면 replication support only 옵션을 사용합니다. 자세한 내용은 스냅샷 없이 트랜잭션 구독 초기화에서 수동으로 구독을 초기화하는 방법에 대해 설명합니다.

  • SQL Server 에서는 DB2에서 지원되는 길이보다 긴 테이블 이름과 열 이름을 사용할 수 있습니다.

    • 게시 데이터베이스에 있는 테이블의 이름이 DB2 구독자에서 지원되는 이름보다 긴 경우에는 destination_table 아티클 속성에 대체 이름을 지정합니다. 게시 생성 시 속성을 설정하는 방법은 게시 만들기아티클 정의를 참조하세요.

    • 대체 열 이름은 지정할 수 없습니다. DB2 구독자에서 지원되는 이름의 길이보다 긴 이름의 열이 게시된 테이블에 포함되어 있는지 확인해야 합니다.

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

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

SQL Server 데이터 형식 IBM DB2 데이터 형식
bigint DECIMAL(19,0)
binary(1-254) CHAR(1-254) FOR BIT DATA
binary(255-8000) VARCHAR(255-8000) FOR BIT DATA
bit SMALLINT
char(1-254) CHAR(1-254)
char(255-8000) VARCHAR(255-8000)
date 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) DOUBLE
float 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 timestamp
smallint SMALLINT
smallmoney DECIMAL(10,4)
sql_variant 해당 없음
sysname VARCHAR(128)
text VARCHAR(0)1
time(0-7) VARCHAR(16)
timestamp CHAR(8) FOR BIT DATA
tinyint SMALLINT
uniqueidentifier CHAR (38)
varbinary(1-8000) VARCHAR(1-8000) FOR BIT DATA
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 구독자로 복제 시 데이터 형식 매핑과 관련된 다음 사항을 고려해야 합니다.

  • , varcharbinaryvarbinary SQL Server charDB2 CHAR, VARCHAR, CHAR FOR BIT DATA 및 VARCHAR FOR BIT DATA에 매핑하는 경우 복제는 DB2 데이터 형식의 길이를 SQL Server 형식의 길이와 동일하게 설정합니다.

    이렇게 하면 DB2의 페이지 크기를 최대 행 크기를 수용할 수 있을 정도로 늘릴 수 있는 한 생성된 테이블을 구독자에서 성공적으로 만들 수 있습니다. DB2 데이터베이스에 액세스하는 데 사용되는 로그인은 테이블을 DB2로 복제할 수 있는 충분한 크기의 테이블 공간에 액세스할 수 있어야 합니다.

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

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

    참고

    DB2 형식에 지정한 길이와 다른 열 길이를 더한 값은 테이블 데이터가 할당되는 DB2 테이블 공간을 기준으로 설정되는 최대 행 크기를 초과할 수 없습니다.

    큰 개체 열에 대한 적절한 매핑이 없으면 열이 복제되지 않도록 아티클에 대해 열 필터링을 사용해 보십시오. 자세한 내용은 게시된 데이터 필터링을 참조하세요.

  • SQL Server nchar DB2 CHAR 및 nvarchar VARCHAR로 복제할 때 복제는 DB2 형식에 대해 SQL Server 형식과 동일한 길이 지정자를 사용합니다. 그러나 데이터 형식의 길이가 생성된 DB2 테이블에 비해 너무 작을 수도 있습니다.

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

참고 항목

Non-SQL Server Subscribers
게시 구독