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 구독자를 구성하려면 다음 단계를 따르십시오.
배포자에 최신 버전의 Microsoft OLE DB Provider for DB2를 설치합니다.
SQL Server Enterprise 에디션을 사용하는 경우 SQL Server 다운로드 웹 페이지의 관련 다운로드 섹션에서 Microsoft SQL Server 기능 팩의 최신 버전에 대한 링크를 클릭합니다. Microsoft SQL Server Feature Pack 웹 페이지에서 Microsoft OLE DB Provider for DB2를 검색합니다.
SQL Server Standard Edition을 사용하는 경우 공급자를 포함하는 HIS(Microsoft Host Integration Services) 서버의 최신 버전을 설치합니다.
공급자 설치 외에 다음 단계에서 사용되는 데이터 액세스 도구도 설치하는 것이 좋습니다. 이 도구는 SQL Server Enterprise 에디션 다운로드 시 기본적으로 설치됩니다. 데이터 액세스 도구 설치 및 사용에 대한 자세한 정보는 공급자 설명서 또는 HIS 설명서를 참조하세요.
구독자에 대한 연결 문자열 만듭니다. 연결 문자열 모든 텍스트 편집기에서 만들 수 있지만 데이터 액세스 도구를 사용하는 것이 좋습니다. 데이터 액세스 도구에서 문자열을 만들려면 다음과 같이 합니다.
시작, 프로그램, Microsoft OLE DB Provider for DB2, 데이터 액세스 도구를 차례로 클릭합니다.
데이터 액세스 도구에서 단계에 따라 DB2 서버에 대한 정보를 제공합니다. 도구를 완료하면 연결된 연결 문자열 사용하여 UDL(유니버설 데이터 링크)이 만들어집니다(UDL은 복제에서 실제로 사용되지는 않지만 연결 문자열).
연결 문자열에 액세스합니다. 데이터 액세스 도구에서 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 서버와 관련이 있지만
Process Binary as Character
옵션 및Derive Parameters
옵션은 항상False
로 설정해야 합니다. 구독 데이터베이스를 식별하는Initial Catalog
옵션에는 값이 필요합니다. 연결 문자열 구독을 만들 때 새 구독 마법사에 입력됩니다.스냅샷 또는 트랜잭션 게시물을 만들고, SQL Server가 아닌 구독자에 대해 사용하도록 설정한 다음, 구독자에 대한 밀어넣기 구독을 만듭니다. 자세한 정보는 비SQL Server 구독자에 대한 구독 만들기
필요에 따라 하나 이상의 문서에 대한 사용자 지정 만들기 스크립트를 지정합니다. 테이블이 게시되면 해당 테이블에 대한
CREATE TABLE
스크립트가 만들어집니다. SQL Server 이외 구독자의 경우 이 스크립트는 Transact-SQL 언어로 생성된 다음 구독자에서 적용되기 전에 배포 에이전트에서 보다 일반적인 SQL 언어로 번역됩니다. 사용자 지정 만들기 스크립트를 지정하려면 기존 Transact-SQL 스크립트를 수정하거나 DB2 SQL 언어를 사용하는 전체 스크립트를 만듭니다. DB2 스크립트가 만들어지면 배포 에이전트 변환 없이 구독자에서 스크립트를 적용할 수 있도록 bypass_translation 지시문을 사용합니다.여러 가지 이유로 스크립트를 수정할 수 있지만 가장 일반적인 이유는 데이터 형식 매핑을 변경하기 위해 수정합니다. 자세한 정보는 이 주제의 "데이터 형식 매핑 고려 사항" 섹션을 참조하세요. Transact-SQL 스크립트를 수정하는 경우 변경 내용은 데이터 형식 매핑 변경으로 제한되어야 하며 스크립트에 주석이 포함되어서는 안 됩니다. 더 많은 변경이 필요한 경우 DB2 스크립트를 만듭니다.
문서 스크립트를 수정하여 사용자 지정 생성 스크립트로 제공하려면
게시에 대해 스냅샷을 생성한 후 게시에 대한 스냅샷 폴더로 이동합니다.
.sch
와 같이 문서와 이름이 같은MyArticle.sch
파일을 찾습니다.메모장 또는 다른 텍스트 편집기를 사용하여 이 파일을 엽니다.
파일을 수정하고 다른 디렉터리에 저장합니다.
creation_script 속성에 파일 경로 및 이름을 지정하여
sp_changearticle
을 실행합니다. 자세한 정보는 sp_changearticle(Transact-SQL)을 참조하세요.
문서 스크립트를 만들어서 사용자 지정 생성 스크립트로 제공하려면
DB2 SQL 언어를 사용하여 아티클 스크립트를 만듭니다. 파일의 첫 번째 줄이 bypass_translation 줄에 아무것도 없는지 확인합니다.
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보다 더 긴 테이블 이름과 열 이름을 허용합니다.
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 | IMAGE |
geometry | IMAGE |
hierarchyid | IMAGE |
image | VARCHAR(0) FOR BIT DATA* |
into | INT |
money | DECIMAL(19,4) |
nchar(1-4000) | VARCHAR(1-4000) |
ntext | VARCHAR(0)* |
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)* |
real | 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) 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 DATA* |
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의 페이지 크기를 최대 행 크기를 수용할 수 있을 정도로 늘릴 수 있는 한 생성된 테이블을 구독자에서 성공적으로 만들 수 있습니다. DB2 데이터베이스에 액세스하는 데 사용되는 로그인은 테이블을 DB2로 복제할 수 있는 충분한 크기의 테이블 공간에 액세스할 수 있어야 합니다.
DB2는 최대 32KB의 VARCHAR 열을 지원할 수 있으므로 SQL Server의 일부 큰 개체 열을 DB2 VARCHAR 열로 적절하게 매핑할 수 있습니다. 그러나 복제에서 DB2에 사용하는 OLE DB 공급자는 SQL Server 큰 개체를 DB2 큰 개체에 매핑하는 것을 지원하지 않습니다. 이러한 이유로 SQL Server 텍스트, varchar(max), ntext 및 nvarchar(max) 열은 생성된 만들기 스크립트의 VARCHAR(0)에 매핑됩니다. 구독자에 스크립트를 적용하기 전에 길이 값 0을 적절한 값으로 변경해야 합니다. 데이터 형식 길이가 변경되지 않으면 DB2 구독자에서 테이블 만들기를 시도할 때 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 데이터 항목이 싱글바이트 문자로 제한되지 않으며 CHAR 또는 VARCHAR 항목의 길이를 고려해야 합니다. 또한 필요한 경우 시프트 인과 시프트 아웃을 고려하여 문자를 바꿔야 합니다. nchar 열과 nvarchar 열이 있는 테이블을 복제하는 경우 사용자 지정 생성 스크립트로 해당 데이터 형식에 보다 큰 최대 길이를 지정할 수도 있습니다. 사용자 지정 만들기 스크립트를 지정하는 방법에 대한 자세한 정보는 이 항목의 "IBM Db2 구독자 구성" 섹션의 5단계를 참조하세요.