다음을 통해 공유


데이터 소비자 문제

이 항목에서는 데이터 소비자 문제 해결을 위한 정보를 제공합니다.

SQL Server Integration Services

Enterprise Single Sign-On

SQL Server Integration Services에서 Enterprise Single Sign-On 사용하는 경우 사용자 이름 및 암호에 대한 자리 표시자 값을 MS$SAME 입력해야 할 수 있습니다. 데이터 연결을 사용하여 SSIS와 함께 사용할 수 있게 하도록 ESSO를 구성할 수 있습니다.

  1. 연결 대화 상자에서 보안 메서드에 대한 Single Sign-On을 클릭합니다.

  2. 드롭다운 목록 상자에서 관련 애플리케이션 을 선택합니다.

  3. 모두 대화 상자에서 암호를 클릭한 다음 값 편집을 클릭합니다. 속성 값 편집 대화 상자에서 속성 값대해 MS$SAME를 입력하고 확인을 클릭합니다.

  4. 모두 대화 상자에서 사용자 ID를 클릭한 다음 값 편집을 클릭합니다. 속성 값 편집 대화 상자에서 속성 값대해 MS$SAME를 입력하고 확인을 클릭합니다.

  5. 연결 대화 상자에서 테스트를 클릭합니다. Microsoft 데이터 연결 대화 상자에서 결과를 확인할 수 있습니다.

  6. 확인을 클릭하여 구성 정보를 저장합니다.

TIMESTAMP 값을 삽입하는 FastLoad

SQL Server Integration Services OLE DB Destination with FastLoad를 사용하여 SQL Server datetime 또는 datetime2 값을 DB2 TIMESTAMP 열에 삽입하는 경우 이 오류가 발생할 수 있습니다.

DATETIME 값의 문자열 표현이 유효한 DATETIME 값이 아닙니다.

이 문제를 해결하려면 데이터 공급자 데이터 원본 속성 초기 메타데이터 사용을 true로 설정해야 합니다.

Use Early Metadata=True

데이터 형식 매핑

Microsoft SQL Server Management Studio 또는 Business Intelligence Design Studio에서 SQL Server Integration Services 가져오기 및 내보내기 마법사를 사용할 때 XML 매핑 파일을 편집하여 기본 데이터 변환을 사용자 지정할 수 있습니다. 가져오기 및 내보내기 마법사 XML 매핑 파일은 다음 폴더에 있습니다.

C:\Program Files\Microsoft SQL Server\100\DTS\MappingFiles
C:\Program Files (x86)\Microsoft SQL Server\100\DTS\MappingFiles

IBM i용 IBM DB2 문자 및 10진수 데이터 형식을 SQL Server 데이터 형식에 올바르게 매핑하려면 DB2 데이터 형식 긴 형식 동의어를 포함하도록 데이터 매핑 파일을 확장해야 합니다. 예를 들어, DB2 INTEGER 원본과 SQL Server 사이에 다음 데이터 형식 매핑을 추가합니다. 이 매핑은 SQLOLEDB, SQLNCL, SQLNCLI10 및 System.Data.SqlClient.SqlConnection과 호환됩니다. 약식 SourceDataType 값 INT를 긴 형식 INTEGER로 바꿉니다.

DB2 INT의 다음 매핑은 z/OS용 DB2 V9 원본과 호환됩니다.

<!-- INT -->
<dtm:DataTypeMapping>
<dtm:SourceDataType>
<dtm:DataTypeName>INT</dtm:DataTypeName>
</dtm:SourceDataType>
<dtm:DestinationDataType>
<dtm:SimpleType>
<dtm:DataTypeName>INT</dtm:DataTypeName>
</dtm:SimpleType>
</dtm:DestinationDataType>
</dtm:DataTypeMapping>

DB2 INTEGER에 대한 다음 데이터 형식 매핑은 IBM i V6R1 원본용 DB2와 호환됩니다.

<!-- INTEGER -->
<dtm:DataTypeMapping>
<dtm:SourceDataType>
<dtm:DataTypeName>INTEGER</dtm:DataTypeName>
</dtm:SourceDataType>
<dtm:DestinationDataType>
<dtm:SimpleType>
<dtm:DataTypeName>INT</dtm:DataTypeName>
</dtm:SimpleType>
</dtm:DestinationDataType>
</dtm:DataTypeMapping>

데이터 형식 매핑 파일

다음 표에서는 데이터 공급자를 사용할 때 편집할 수 있는 세 가지 매핑 파일에 대해 설명합니다.

DB2 데이터 형식 이름 DB2ToMSSql DB2ToMSSql10 DB2ToSSIS10
TIME DATETIME time DT_DBTIME
timestamp Datetime datetime2 DT_DBTIMESTAMP2
DATE DATETIME DATE DT_DBDATE
CHAR CHAR CHAR DT_STR
CHAR () FOR BIT DATA BINARY BINARY DT_BYTES
CHAR () FOR MIXED DATA NCHAR NCHAR DT_WSTR
CHAR () FOR SBCS DATA CHAR CHAR DT_STR
CHARACTER CHAR CHAR DT_STR
CHARACTER () FOR BIT DATA BINARY BINARY DT_BYTES
CHARACTER () FOR MIXED DATA NCHAR NCHAR DT_WSTR
CHARACTER () FOR SBCS DATA CHAR CHAR DT_STR
NATIONAL CHARACTER NCHAR NCHAR DT_WSTR
VARCHAR VARCHAR VARCHAR DT_STR
VARCHAR () FOR BIT DATA VARBINARY VARBINARY DT_BYTES
VARCHAR () FOR MIXED DATA NVARCHAR NVARCHAR DT_WSTR
VARCHAR () FOR SBCS DATA VARCHAR VARCHAR DT_STR
CHARACTER VARYING VARCHAR VARCHAR DT_STR
CHARACTER VARYING () FOR BIT DATA VARBINARY VARBINARY DT_BYTES
CHARACTER VARYING () FOR MIXED DATA NVARCHAR NVARCHAR DT_WSTR
CHARACTER VARYING () FOR SBCS DATA VARCHAR VARCHAR DT_STR
NATIONAL CHARACTER VARYING NVARCHAR NVARCHAR DT_WSTR
LONG VARCHAR FOR BIT DATA 이미지 이미지 DT_IMAGE
LONG VARCHAR text text DT_TEXT
GRAPHIC NCHAR NCHAR DT_WSTR
VARGRAPHIC NVARCHAR NVARCHAR DT_WSTR
GRAPHIC VARYING NVARCHAR NVARCHAR DT_WSTR
SMALLINT SMALLINT SMALLINT DT_I2
INT INT INT DT_14
INTEGER INT INT DT_14
bigint bigint bigint DT_18
DECIMAL NUMERIC NUMERIC DT_NUMERIC
NUMERIC NUMERIC NUMERIC DT_NUMERIC
real 실수 실수 DT_R4
FLOAT FLOAT FLOAT DT_R8
DOUBLE FLOAT FLOAT DT_R8
DOUBLE PRECISION FLOAT FLOAT DT_R8
BLOB 이미지 이미지 DT_BYTES
BINARY LARGE OBJECT 이미지 이미지 DT_BYTES
CLOB text text DT_TEXT
CLOB () FOR MIXED DATA ntext ntext DT_NTEXT
CLOB () FOR SBCS DATA text text DT_TEXT
CHAR LARGE OBJECT text text DT_TEXT
CHAR LARGE OBJECT () FOR MIXED DATA ntext ntext DT_NTEXT
CHAR LARGE OBJECT () FOR SBCS DATA text text DT_TEXT
CHARACTER LARGE OBJECT text text DT_TEXT
CHARACTER LARGE OBJECT () FOR MIXED DATA ntext ntext DT_NTEXT
CHARACTER LARGE OBJECT () FOR SBCS DATA text text DT_TEXT
130 ntext ntext DT_NTEXT

매핑 파일을 편집한 후에는 작업 환경에 따라 SQL Server 가져오기 및 내보내기 마법사 또는 Business Intelligence Development Studio를 닫았다가 다시 열어야 합니다.

SQL Server 2008 Integration Services를 구성하는 방법에 대한 자세한 내용은 SQL Server 온라인 설명서(https://go.microsoft.com/fwlink/?LinkId=193204)의 SQL Server 가져오기 및 내보내기 마법사를 사용하여 데이터 가져오기 및 내보내기 항목을 참조하세요.

데이터 흐름 구성 요소 사용자 지정

SQL Server Integration Services 데이터 흐름 구성 요소를 사용하여 기본 및 사용자 지정 변환을 수행할 수 있습니다. 사용자 지정 변환은 개발자 제공 사용자 지정 코드를 기준으로 합니다.

XML 형식의 SQL Server Integration Services 매핑 파일은 가져오기 및 내보내기 마법사와 함께 사용됩니다. 이러한 파일은 데이터 흐름과 함께 사용할 수 없습니다. SQL Server Integration Services는 파이프라인 버퍼 클래스를 제공하여 엔터프라이즈 개발자가 데이터 흐름 내에서 데이터 매핑을 사용자 지정할 수 있습니다. SQL Server 2008 Integration Services를 사용하여 데이터 흐름 구성 요소를 사용자 지정하는 방법에 대한 자세한 내용은 SQL Server 온라인 설명서(https://go.microsoft.com/fwlink/?LinkId=241523)의 Data Flow 항목에서 데이터 형식 작업을 참조하세요.

SQL Server 복제

매개 변수 파생

SQL Server 복제에서는 매개 변수 파생이 FALSE로 설정되어야 합니다.

데이터 형식 매핑

SQL Server에서 DB2 데이터 형식으로의 기본 매핑에 따라 SQL Server 복제가 데이터를 잘못 변환할 수 있습니다. 다음과 같은 SQL Server 시스템 저장 프로시저를 사용하여 복제 데이터 형식 매핑을 검토하고 수정하는 것이 좋습니다.

  • sp_helpdatatypemap
    
  • sp_getdefaultdatatypemapping
    
  • sp_setdefaultdatatypemapping
    

    자세한 내용은 SQL Server 온라인 설명서의 시스템 저장 프로시저(Transact-SQL) 항목(http://go.microsoft.com/fwlink/?LinkId=241524)을 참조하세요.

    SQL Server DATETIME2 - DBTYPE_TIMESTAMP 매핑 문제

    z/OS용 DB2로의 SQL Server 2008 복제가 실패하여 SQLCODE -188(datetime 값의 문자열 표현이 유효한 datetime 값이 아닙니다.)이 표시될 수 있습니다. 이 오류는 복제가 DATETIME2를 DB2 VARCHAR(27)로 매핑하도록 구성되어 있고 구독 아티클 명령을 문자열 리터럴 데이터 값과 함께 사용하는 경우에 발생합니다.

    단계별 지침이 포함된 문제 해결 방법

    SQL Server 2008 복제가 DATETIME2를 DB2 TIMESTAMP로 매핑하도록 다시 구성하고 매개 변수를 사용하여 구독 아티클 명령을 다시 구성합니다. 이렇게 하면 데이터 공급자가 DATETIME2를 IBM DB2 데이터베이스 서버가 지원하는 DB2 TIMESTAMP 구조 형식으로 지정할 수 있습니다.

  1. 수정할 데이터 형식 매핑을 식별합니다. 모든 단계에 MASTER를 사용합니다.

    select * from

    sys.fn_helpdatatypemap
    (
       'MSSQLSERVER',
        '%',
        '%',
        '%',
        '%',
        '%',
        0
    )
    
  2. 여기서 destination_dbms는 'DB2'이고 source_type은 'datetime2'입니다. 결과에 수정할 mapping_id가 표시되어야 합니다. 다음 표는 mapping_id가 189인 이 예의 결과 창을 보여 줍니다.

    mapping_id source_dbms source_type destination_dbms destination_type destination_length
    189 MSSQLSERVER datetime2 DB2 VARCHAR 27
  3. 데이터 형식 매핑을 삭제합니다.

    exec sp_dropdatatypemapping 189
    
  4. 데이터 형식 매핑을 추가합니다.

    exec  sp_adddatatypemapping
         @source_dbms = 'MSSQLSERVER',
         @source_type = 'datetime2',
         @destination_dbms = 'DB2',
         @destination_type = 'TIMESTAMP',
         @destination_nullable = 1,
         @destination_createparams = 0,
         @dataloss = 0,
         @is_default = 1
    
  5. 쿼리를 다시 실행하여 새로운 데이터 형식 매핑을 확인합니다.

    select * from

    select * from sys.fn_helpdatatypemap
    (
       'MSSQLSERVER',
        '%',
        '%',
        '%',
        '%',
        '%',
        0
    )
    
  6. 여기서 destination_dbms = 'DB2'이고 source_type = 'datetime2'입니다.

    결과가 수정할 mapping_id를 나타내야 합니다. 다음 표는 mapping_id가 189인 이 예의 결과 창을 보여 줍니다.

    mapping_id source_dbms source_type destination_dbms destination_type destination_length
    494 MSSQLSERVER datetime2 DB2 timestamp NULL
  7. 다시 구성할 복제 구독 아티클을 식별합니다. Transact-SQL USE 문을 사용하여 마스터 데이터베이스에서 복제할 원본 데이터베이스로 전환합니다.

    USE [테스트]

    select name, status from sysarticles
    
  8. 결과가 수정할 아티클의 이름을 표시해야 합니다. 이 예에서 다음 표는 이름이 DB2TS01인 결과를 보여 줍니다.

    name 상태
    DB2TS01 25
  9. 상태 값이 1 또는 9이면 아티클이 문자열 리터럴 형식으로 구성됩니다.

    상태 값이 17 또는 25이면 아티클이 매개 변수가 있는 형식으로 구성됩니다.

  10. 매개 변수가 있는 명령에 대해 복제 구독 아티클을 구성합니다.

    USE [테스트]

    DECLARE @publication AS sysname;
    DECLARE @article AS sysname;
    SET @publication = N'DB2TS_PUB01';
    SET @article = N'DB2TS01';
    EXEC sp_changearticle @publication, @article, 'status', 'parameters', 0, 0;
    

    자세한 내용은 온라인 SQL Server 설명서의 복제 시스템 저장 프로시저 개념(https://go.microsoft.com/fwlink/?LinkId=241525)을 참조하세요.

오류 8152: 문자열 또는 이진 데이터가 잘립니다로 인해 복제 INSERT 작업 실패

SQL Server 오류 8152(문자열 또는 이진 데이터가 잘립니다)로 인해 SQL Server 복제 INSERT 작업이 실패할 수 있습니다. (1) 데이터 공급자가 초기 메타데이터를 사용하도록 구성되지 않고 (2) 매개 변수가 있는 INSERT 문을 사용하도록 복제가 구성되지 않은 경우에 발생할 수 있습니다.

SQL Server 복제 구독자 데이터 원본 정의에서 “초기 메타데이터 사용=true”를 지정하도록 데이터 공급자 연결을 다시 구성합니다.

자세한 내용은 DB2용 OLE DB Provider for DB2의 모든 속성 DB2 데이터 링크 에 대한 데이터 공급자 구성 설명서를 참조하세요.

"24" 옵션을 포함하도록 SQL Server 복제 구독 문서를 다시 구성합니다("INSERT 문에 열 이름을 포함하고 매개 변수가 있는 문을 사용합니다.").

자세한 내용은 SQL Server 설명서의 SQL Server 복제 sp_addarticle(Transact-SQL)를 참조하세요.

SQL Server Analysis Services

SQL Server Analysis Services에서 사용할 큐브를 디자인할 때 이 도구에서는 DB2 서버가 지원하는 최대 길이를 초과하는 긴 별칭 이름이 포함된 SQL 명령을 생성합니다. 사용하는 DB2 플랫폼 및 버전에 따라 18자를 넘는 별칭 이름이 있는 쿼리는 사용하지 못할 수 있습니다. 예를 들어 z/OS용 DB2에 배포된 많은 개체는 18자로 된 이름을 사용합니다. DB2 SQL Reference에서 해당 DB2 플랫폼 및 버전을 참조하고 DB2 데이터베이스 관리자에게 확인하십시오. 관리자 또는 개발자는 식별자 길이(limit-table-identifier-length)를 29에서 18로 변경하여 DB2를 위한 데이터 형식 매핑 지원이 포함된 두 개의 SQL Server Analysis Service 구성 카트리지 파일을 업데이트하는 것이 좋습니다. 업데이트해야 하는 두 카트리지 파일의 이름과 위치는 다음과 같습니다.

  • C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\DataWarehouseDesigner\UIRdmsCartridge\db2v0801.xs

  • C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\DataWarehouseDesigner\UIRdmsCartridge\db2v0801.xs

    SQL Server Analysis Services는 업데이트된 구성 파일을 사용하여 SQL 문의 개체에 대해 올바르게 이름을 지정합니다.

DB2용 SQL Server Migration Assistant

DB2(SSMA)에 대한 SQL Server Migration Assistant 사용하여 DB2 CLOB 데이터를 읽을 때는 연결 문자열 옵션을 사용하여 SSMA 내에서 DB2 연결을 정의한 다음 다음 인수를 연결 문자열 포함해야 합니다.

  • 초기 메타데이터 사용=True

이 인수는 디자인 타임에 정의된 초기 메타데이터(매개 변수 및 열 데이터 형식) 또는 런타임에 정의된 늦은 메타데이터를 사용하도록 데이터 공급자에게 지시합니다. 이 선택적 속성 부울 값을 허용합니다. 기본값은 false입니다. DB2용 SSMA(SQL Server Migration Assistant)를 사용하여 CLOB 데이터로 인코딩된 스키마 정보(예: SYSIBM.SYSTRIGGERS 테이블의 STATEMENT 열)를 포함한 CLOB 데이터를 읽을 때 True를 지정합니다.