다음을 통해 공유


세계화 팁 및 모범 사례(Analysis Services)

적용 대상: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

중요하다: 이 문서의 정보는 다차원 모델 솔루션에만 적용됩니다.

이러한 팁과 지침은 다차원 비즈니스 인텔리전스 솔루션의 이식성을 높이고 언어 및 데이터 정렬 설정과 직접 관련된 오류를 방지하는 데 도움이 될 수 있습니다.

스택 전체에서 유사한 데이터 정렬 사용

가능하면 데이터베이스 엔진에 사용하는 SQL Server Analysis Services에서 동일한 데이터 정렬 설정을 사용하여 너비 민감도 및 대/소문자 구분 및 액세스 민감도의 대응을 위해 노력합니다.

각 서비스에는 자체 데이터 정렬 설정이 있으며 데이터베이스 엔진 기본값은 SQL_Latin1_General_CP1_CI_AS 설정되고 Analysis Services는 Latin1_General_AS 설정됩니다. 기본값은 대/소문자, 너비 및 악센트 구분 측면에서 호환됩니다. 데이터 정렬의 설정을 변경하면 데이터 정렬 속성이 기본적인 방식으로 다를 때 문제가 발생할 수 있습니다.

데이터 정렬 설정이 기능적으로 동일한 경우에도 문자열 내의 빈 공간이 각 서비스에 의해 다르게 해석되는 특수한 경우에 실행할 수 있습니다.

공백 문자는 유니코드에서 SBCS(싱글바이트) 또는 DBCS(더블바이트 문자 집합)로 나타낼 수 있으므로 '특수 사례'입니다. 관계형 엔진에서 공간으로 구분된 두 개의 복합 문자열(하나는 SBCS를 사용하고 다른 하나는 DBCS)은 동일한 것으로 간주됩니다. Analysis Services에서 처리하는 동안 동일한 두 복합 문자열이 동일하지 않으며 두 번째 인스턴스는 중복으로 플래그가 지정됩니다.

자세한 내용 및 제안된 해결 방법은 데이터 정렬에 따라 유니코드 문자열의 공백에 따라 다른 처리 결과를 참조하세요.

일반적인 데이터 정렬 권장 사항

Analysis Services는 항상 사용 가능한 모든 언어 및 데이터 정렬의 전체 목록을 제공합니다. 선택한 언어에 따라 데이터 정렬을 필터링하지 않습니다. 실행 가능한 조합을 선택해야 합니다.

더 일반적으로 사용되는 데이터 정렬 중 일부는 다음 목록에 포함됩니다.

이 목록은 다른 옵션을 제외하는 명확한 권장 사항이 아니라 추가 조사를 위한 시작점으로 간주해야 합니다. 데이터 정렬이 특별히 권장되지 않는 데이터 정렬이 데이터에 가장 적합한 데이터 정렬임을 알 수 있습니다. 철저한 테스트는 데이터 값이 적절하게 정렬되고 비교되는지 여부를 확인하는 유일한 방법입니다. 언제나처럼 데이터 정렬을 테스트할 때 처리 워크로드와 쿼리 워크로드를 모두 실행해야 합니다.

  • Latin1_General_100_AS ISO 기본 라틴어 알파벳의 26자를 사용하는 애플리케이션에 자주 사용됩니다.

  • 스칸디나비아 문자(예: ø)를 포함하는 북유럽 언어는 Finnish_Swedish_100 사용할 수 있습니다.

  • 러시아어와 같은 동유럽 언어는 종종 Cyrillic_General_100 사용합니다.

  • 중국어 및 데이터 정렬은 지역에 따라 다르지만 일반적으로 중국어 간체 또는 중국어 번체입니다.

    중국 및 싱가포르에서 Microsoft 지원은 중국어 간체를 선호하는 정렬 순서로 Pinyin으로 보는 경향이 있습니다. 권장되는 데이터 정렬은 Chinese_PRC(SQL Server 2000의 경우), Chinese_PRC_90(SQL Server 2005의 경우) 또는 Chinese_Simplified_Pinyin_100(SQL Server 2008 이상)입니다.

    대만에서는 스트로크 수(SQL Server 2000의 경우), Chinese_Taiwan_Stroke Chinese_Taiwan_Stroke_90(SQL Server 2005의 경우) 또는 Chinese_Traditional_Stroke_Count_100(SQL Server 2008 이상)의 경우 스트로크 수에 따라 정렬 순서가 권장되는 중국어 번체를 확인하는 것이 더 일반적입니다.

    다른 지역(예: 홍콩 특별 행정 지역 및 마카오 특별 관리 지역)도 중국어 번체를 사용합니다. 데이터 정렬의 경우 홍콩 특별 행정구에서 Chinese_Hong_Kong_Stroke_90(SQL Server 2005)를 보는 것은 드문 일이 아닙니다. Macao SAR에서 Chinese_Traditional_Stroke_Count_100(SQL Server 2008 이상)은 상당히 자주 사용됩니다.

  • 일본어의 경우 가장 일반적으로 사용되는 데이터 정렬은 Japanese_CI_AS. Japanese_XJIS_100 JIS2004 지원하는 설치에 사용됩니다. Japanese_BIN2 일반적으로 데이터 마이그레이션 프로젝트, 비 Windows 플랫폼 또는 SQL Server 관계형 데이터베이스 엔진 이외의 데이터 원본에서 발생하는 데이터로 표시됩니다.

    Japanese_Bushu_Kakusu_100 Analysis Services 워크로드를 실행하는 서버에서는 거의 볼 수 없습니다.

  • Korean_100 한국어에 권장됩니다. Korean_Wansung_Unicode 여전히 목록에서 사용할 수 있지만 더 이상 사용되지 않습니다.

개체 식별자의 대/소문자 구분

SQL Server 2012 SP2부터 개체 ID의 대/소문자 구분은 데이터 정렬과 독립적으로 적용되지만 동작은 언어에 따라 다릅니다.

언어 스크립트 대/소문자 구분
기본 라틴어 알파벳 라틴어 스크립트로 표현된 개체 식별자(26개의 영어 대문자 또는 소문자 중)는 데이터 정렬에 관계없이 대/소문자를 구분하지 않는 것으로 처리됩니다. 예를 들어 다음과 같은 개체 ID는 동일한 것으로 간주됩니다. 54321abcdef, 54321ABCDEF, 54321AbCdEf. 내부적으로 Analysis Services는 문자열의 문자를 모두 대문자로 처리한 다음 언어와 독립적인 간단한 바이트 비교를 수행합니다.

26자만 영향을 받습니다. 언어가 서유럽어이지만 스칸디나비아 문자를 사용하는 경우 추가 문자는 대문자로 표시되지 않습니다.
키릴 자모, 그리스어, 콥트, 아르메니아어 키릴 자모와 같이 라틴 문자가 아닌 양원 스크립트의 개체 식별자는 항상 대/소문자를 구분합니다. 예를 들어 Измерение 및 измерение는 첫 글자의 경우만 다르더라도 두 개의 고유 값으로 간주됩니다.

개체 식별자에 대한 대/소문자 구분의 의미

개체 이름이 아닌 개체 식별자만 테이블에 설명된 대/소문자 동작의 적용을 받습니다. 솔루션 작동 방식(SQL Server 2012 SP2 이상을 설치한 후 비교 전후)의 변경 내용이 표시되는 경우 처리 문제가 될 가능성이 높습니다. 쿼리는 개체 식별자의 영향을 받지 않습니다. 두 쿼리 언어(DAX 및 MDX)의 경우 수식 엔진은 식별자가 아닌 개체 이름을 사용합니다.

비고

대/소문자 구분과 관련된 코드 변경은 일부 애플리케이션에서 호환성이 손상되는 변경되었습니다.

Excel, SQL Server Profiler 및 SQL Server Management Studio를 사용하여 로캘 테스트

번역을 테스트할 때 연결은 번역의 LCID를 지정해야 합니다.

로캘 식별자 연결 문자열 속성을 포함하도록 .odc 파일을 직접 편집하여 이 작업을 수행할 수 있습니다. Adventure Works 샘플 다차원 데이터베이스를 사용하여 사용해 보세요.

  • 기존 .odc 파일을 검색합니다. Adventure Works 다차원용 파일을 찾으면 파일을 마우스 오른쪽 단추로 클릭하여 메모장에서 엽니다.

  • 연결 문자열에 추가 Locale Identifier=1036 합니다. 파일을 저장 후 닫습니다.

  • Excel 열기 | 데이터 | 기존 연결. 이 컴퓨터의 연결 파일로만 목록을 필터링합니다. Adventure Works에 대한 연결을 찾습니다(이름을 주의 깊게 살펴보세요. 둘 이상이 있을 수 있습니다). 연결을 엽니다.

    Adventure Works 샘플 데이터베이스에서 프랑스어 번역이 표시됩니다.

    프랑스어 번역을 사용하는 Excel 피벗 테이블

후속 작업으로 SQL Server Profiler를 사용하여 로캘을 확인할 수 있습니다. Session Initialize 이벤트를 클릭한 다음 아래 텍스트 영역에서 속성 목록을 확인하여 찾<localeidentifier>1036</localeidentifier>습니다.

Management Studio에서 서버 연결에서 로캘 식별자를 지정할 수 있습니다.

  • 개체 탐색기 | 연결하다 | Analysis Services | 옵션을 선택하고 추가 연결 매개 변수 탭을 클릭합니다.

  • 입력 Locale Identifier=1036 한 다음 연결을 클릭합니다.

  • Adventure Works 데이터베이스에 대해 MDX 쿼리를 실행합니다. 쿼리 결과는 프랑스어 번역이어야 합니다.

    SSMS에서 프랑스어 번역을 사용하는 SSMS

번역이 포함된 솔루션에서 MDX 쿼리 작성

번역은 SQL Server Analysis Services 개체의 이름에 대한 표시 정보를 제공하지만 동일한 개체의 식별자는 번역되지 않습니다. 가능하면 번역된 캡션 및 이름 대신 SQL Server Analysis Services 개체의 식별자와 키를 사용합니다. 예를 들어 MDX(Multidimensional Expressions) 문 및 스크립트의 멤버 이름 대신 멤버 키를 사용하여 여러 언어에서 이식성을 보장합니다.

비고

테이블 형식 개체 이름은 데이터 정렬에 관계없이 항상 대/소문자를 구분하지 않습니다. 반면에 다차원 개체 이름은 데이터 정렬의 대/소문자 구분을 따릅니다. 다차원 개체 이름만 대/소문자를 구분하기 때문에 다차원 개체를 참조하는 모든 MDX 쿼리의 대/소문자를 올바르게 지정해야 합니다.

날짜 및 시간 값이 포함된 MDX 쿼리 작성

날짜 및 시간 기반 MDX 쿼리를 다양한 언어에서 이식 가능하도록 하기 위한 다음 제안 사항입니다.

  1. 비교 및 작업에 숫자 부분 사용

    월 및 요일 비교 및 작업을 수행하는 경우 문자열 등가물 대신 숫자 날짜 및 시간 부분을 사용합니다(예: MonthName 대신 MonthNumberofYear 사용). 숫자 값은 언어 번역의 차이의 영향을 가장 적게 받습니다.

  2. 결과 집합에 해당하는 문자열 사용

    최종 사용자가 볼 수 있는 결과 집합을 작성할 때 다국어 대상 사용자가 제공한 번역의 이점을 활용할 수 있도록 문자열(예: MonthName)을 사용하는 것이 좋습니다.

  3. 범용 날짜 및 시간 정보에 ISO 날짜 형식 사용

    Analysis Services 전문가는 다음과 같은 권장 사항을 가지고 있습니다. "SQL 또는 MDX의 쿼리에 전달하는 날짜 문자열에는 항상 ISO 날짜 형식 yyyy-mm-dd 사용합니다. 이는 모호하지 않으며 클라이언트 또는 서버의 지역 설정에 관계없이 작동하기 때문입니다. 모호한 날짜 형식을 구문 분석할 때 서버가 해당 지역 설정을 연기해야 한다는 데 동의하지만, 해석에 열려 있지 않은 옵션이 있다면 어쨌든 더 잘 선택하는 것이 더 낫다고 생각합니다."

  4. Format 함수를 사용하여 지역 언어 설정에 관계없이 특정 형식 적용

    포럼 게시물에서 차용한 다음 MDX 쿼리는 기본 지역 설정에 관계없이 Format을 사용하여 특정 형식으로 날짜를 반환하는 방법을 보여 줍니다.

    WITH MEMBER [LinkTimeAdd11Date_Manual] as Format(dateadd("d",15,"2014-12-11"), "mm/dd/yyyy")  
    member [LinkTimeAdd15Date_Manual] as Format(dateadd("d",11,"2014-12-13"), "mm/dd/yyyy")  
    SELECT  
    { [LinkTimeAdd11Date_Manual]  
    ,[LinkTimeAdd15Date_Manual]  
    }  
    ON COLUMNS   
    FROM [Adventure Works]  
    
    

참고하십시오

Analysis Services에 대한 세계화 시나리오
국제 Transact-SQL 문 작성