방법: Oracle 게시자에 대한 데이터 형식 매핑 지정(복제 Transact-SQL 프로그래밍)

Oracle 게시자에 대해 기본 데이터 형식 매핑 집합이 제공되지만 특정 게시에 대해 다른 매핑을 지정해야 할 수 있습니다. 복제 저장 프로시저를 사용하여 사용자 지정 데이터 형식 매핑을 프로그래밍 방식으로 지정할 수 있습니다. 또한 Microsoft SQL Server와 SQL Server 이외의 DBMS(데이터베이스 관리 시스템) 사이에 데이터 형식을 매핑할 때 사용되는 기본 매핑을 설정할 수 있습니다. 자세한 내용은 Oracle 게시자에 대한 데이터 형식 매핑을 참조하십시오.

Oracle 게시에 속한 아티클을 작성할 때 사용자 지정 데이터 형식 매핑을 정의하려면

  1. Oracle 게시가 아직 없는 경우 만듭니다. 자세한 내용은 방법: Oracle 데이터베이스로부터 게시 만들기(복제 Transact-SQL 프로그래밍)를 참조하십시오.

  2. 배포자에서 sp_addarticle을 실행합니다. @use_default_datatypes에 값 0을 지정합니다. 자세한 내용은 방법: 아티클 정의(복제 Transact-SQL 프로그래밍)를 참조하십시오.

  3. 배포자에서 sp_helparticlecolumns를 실행하여 게시된 아티클의 열에 대한 기존 매핑을 확인합니다.

  4. 배포자에서 sp_changearticlecolumndatatype을 실행합니다. @publisher에 Oracle 게시자의 이름을 지정하고 @publication, @article@column을 지정하여 게시된 열을 정의합니다. @type에 매핑할 SQL Server 데이터 형식의 이름을 지정하고 해당되는 경우 @length, @precision@scale을 지정합니다.

  5. 배포자에서 sp_articleview를 실행합니다. 이렇게 하면 Oracle 게시에서 스냅숏을 생성하는 데 사용되는 뷰가 만들어집니다.

매핑을 데이터 형식에 대한 기본 매핑으로 지정하려면

  1. (옵션) 데이터베이스의 배포자에서 sp_getdefaultdatatypemapping을 실행합니다. @source_dbms, @source_type, @destination_dbms, @destination_version을 지정하고 원본 DBMS를 식별하는 데 필요한 기타 매개 변수를 지정합니다. 대상 DBMS의 현재 매핑된 데이터 형식에 대한 정보는 출력 매개 변수를 사용하여 반환됩니다.

  2. (옵션) 데이터베이스의 배포자에서 sp_helpdatatypemap을 실행합니다. @source_dbms를 지정하고 결과 집합을 필터링하는 데 필요한 기타 매개 변수를 지정합니다. 결과 집합에서 원하는 매핑에 대한 mapping_id의 값을 확인합니다.

  3. 데이터베이스의 배포자에서 sp_setdefaultdatatypemapping을 실행합니다.

    • 2단계에서 얻은 mapping_id의 원하는 값을 아는 경우 @mapping_id에 이 값을 지정합니다.

    • mapping_id를 모르는 경우 @source_dbms, @source_type, @destination_dbms, @destination_type 매개 변수 및 기타 기존 매핑을 식별하는 데 필요한 매개 변수를 지정합니다.

지정된 Oracle 데이터 형식에 대한 유효한 데이터 형식을 찾으려면

  • 데이터베이스의 배포자에서 sp_helpdatatypemap을 실행합니다. @source_dbms의 값을 ORACLE로 지정하고 결과 집합을 필터링하는 데 필요한 기타 매개 변수를 지정합니다.

다음 예에서는 열을 Oracle 데이터 형식 NUMBER로 변경하여 기본 float 데이터 형식 대신 SQL Server 숫자 데이터 형식(38,38)에 매핑되도록 합니다.

EXEC sp_changearticlecolumndatatype 
    @publication = 'OraPublication', 
    @publisher = 'OraPublisher', 
    @article = 'OraArticle', 
    @column = 'OraArticleCol', 
    @type = 'numeric', 
    @scale = 38, 
    @precision = 38;
GO

다음 쿼리 예에서는 Oracle 9 데이터 형식 CHAR에 대한 기본 및 대체 매핑을 반환합니다.

EXEC sp_helpdatatypemap 
    @source_dbms = N'ORACLE', 
    @source_version = 9,
    @source_type = N'CHAR';
GO

다음 쿼리 예에서는 소수 자릿수 또는 전체 자릿수 없이 지정된 경우 Oracle 9 데이터 형식 NUMBER에 대한 기본 매핑을 반환합니다.

EXEC sp_helpdatatypemap 
    @source_dbms = N'ORACLE', 
    @source_version = 9,
    @source_type = N'NUMBER',
    @defaults_only = 1;
GO