언어 및 데이터 정렬(Analysis Services)

Analysis Services는 Microsoft Windows 운영 체제에서 제공하는 언어 및 데이터 정렬을 지원합니다. Language 및 Collation 속성은 설치 중에 인스턴스 수준에서 처음 설정되지만, 나중에 개체 계층 구조의 다른 수준에서 변경될 수 있습니다.

다차원 모델(전용)에서는 데이터베이스 또는 큐브에서 이러한 속성을 설정할 수 있고 큐브 내에서 개체에 대해 만들 번역에서 설정할 수도 있습니다.

Language 및 Collation을 설정할 때 처리 및 쿼리 실행 중에 데이터 모델에서 사용되는 설정을 지정하거나, 외국어 발표자가 모국어로 모델을 사용할 수 있도록 모델에 여러 번역이 갖춰져 있습니다(다차원 모델에만 해당). 개발 환경과 프로덕션 서버가 여러 가지 로캘로 구성되어 있는데 언어 및 데이터 정렬이 의도한 대상 환경의 언어 및 데이터 정렬과 일치하게 하려면 개체(데이터베이스, 모델 또는 큐브)에서 Language 및 Collation 속성을 명시적으로 설정해야 합니다.

이 항목에는 다음 섹션에 포함됩니다.

  • Objects that support Language and Collation properties

  • Language support in Analysis Services

  • Collation support in Analysis Services

  • Change the default language or collation on the instance

  • Change the language or collation on a cube

  • Change language or collation within a data model using XMLA

  • Boost performance for English locales through EnableFast1033Locale

  • GB18030 Support in Analysis Services

언어 및 데이터 정렬 속성을 지원하는 개체

Language 및 Collation 속성은 종종 함께 노출됩니다. 여기서 Language 및 Collation을 설정할 수 있습니다.

다음 개체에서 Language 및 Collation을 설정할 수 있습니다.

  • 인스턴스. 인스턴스에 배포되는 모든 프로젝트는 언어와 데이터 정렬이 정의되지 않은 경우 해당 인스턴스의 언어 및 데이터 정렬을 채택합니다. 기본적으로 다차원 모델은 언어 및 데이터 정렬을 비워 둡니다. 프로젝트를 배포할 때 결과 데이터베이스 및 큐브는 인스턴스의 언어와 데이터 정렬을 가져옵니다.

    처음에 언어 및 데이터 정렬 속성은 설치 중에 설정되지만 관리자가 Management Studio에서 재정의할 수 있습니다. 자세한 내용은 Change the default language or collation on the instance를 참조하세요.

  • 데이터베이스. 상속을 중단하려면 데이터베이스에 포함된 모든 큐에서 사용되는 프로젝트 수준에서 언어 및 데이터 정렬을 명시적으로 설정합니다. 별도로 지정하지 않으면 데이터베이스의 모든 큐브는 이 수준에서 지정된 언어와 데이터 정렬을 가져옵니다. 정기적으로 다른 로캘로 코딩하고 배포할 경우(예: 중국어 컴퓨터에서 솔루션을 개발하지만 프랑스 자회사가 소유한 서버에 배포하는 경우) 먼저 데이터베이스 수준에서 언어 및 데이터 정렬을 설정해야 솔루션이 대상 환경에서 제대로 작동합니다. 프로젝트 내부에서 이러한 속성을 설정하는 것이 좋습니다(프로젝트에서 데이터베이스 편집 명령 사용).

  • 데이터베이스 차원 디자이너는 데이터베이스 차원에서 Language 및 Collation 속성을 노출하지만 이 개체에서 속성을 설정하는 것은 유용하지 않습니다. 데이터베이스 차원은 독립 실행형 개체로 사용되지 않으므로 정의한 속성을 사용하는 것이 불가능하지는 않지만 어려울 수 있습니다. 큐브 내에 있을 때 차원은 항상 큐브 부모로부터 Language 및 Collation을 상속합니다. 독립 실행형 데이터베이스 차원 개체에서 설정한 값은 모두 무시됩니다.

  • 큐브. 주 쿼리 구조처럼 큐브 수준에서 언어 및 데이터 정렬을 설정할 수 있습니다. 예를 들어 각 큐브에 자체 언어와 데이터 정렬이 포함된 큐브의 영어 및 중국어 버전 같은 여러 큐브 언어 버전을 같은 프로젝트 내에서 만들 수 있습니다.

    큐브에서 설정한 언어와 데이터 정렬은 무엇이든 큐브에 포함된 모든 측정값과 큐브에서 사용됩니다. 데이터 정렬 속성을 더 세부적인 단위로 설정하려면 차원 특성에서 번역을 만들어야 합니다. 그렇지 않으면 특성 수준에 번역이 없다고 간주하여 큐브당 하나의 데이터 정렬만 있게 됩니다.

또한 번역 개체에서 Language를 단독으로 설정할 수 있습니다.

번역 개체는 큐브 또는 차원에 번역을 추가할 때 생성됩니다. Language는 번역 정의 일부입니다. 반면에 Collation은 큐브 이상 수준에서 설정되고 모든 번역에서 공유됩니다. 번역이 포함된 큐브의 XMLA에서 여러 언어 속성(각 번역에 대해 하나씩)이 있지만 데이터 정렬은 하나만 있음을 분명히 확인할 수 있습니다. 차원 특성 번역에 대한 한 가지 예외는 큐브 데이터 정렬을 재정의하여 원본 열과 일치하는 특성 데이터 정렬을 지정하는 경우입니다. 데이터베이스 엔진이 개별 열에서 설정 데이터 정렬을 지원하고 일반적으로 다른 원본 열에서 멤버 데이터를 가져오도록 개별 번역을 구성합니다. 그러나 이외의 모든 기타 번역에는 보통 함께 사용되는 Collation 없이 Language가 단독으로 사용됩니다. 자세한 내용은 번역(Analysis Services)를 참조하세요.

Analysis Services의 언어 지원

Language 속성은 쿼리 처리 중에 사용되는 개체의 로캘을 설정하고 Captions 및 Translations과 함께 사용되어 다국어 시나리오를 지원합니다. 로캘은 영어 등의 언어 식별자와 날짜 및 시간 표현을 더 구체화하는 미국 또는 오스트레일리아 등의 지역을 기준으로 합니다.

인스턴스 수준에서 속성은 설치 중에 설정되고 Windows Server 운영 체제의 언어(언어 팩이 설치된 경우 37개 언어 중 하나)를 기반으로 합니다. 설치 프로그램에서는 언어를 변경할 수 없습니다.

설치 후에 Management Studio 또는 msmdsrv.ini 구성 파일의 서버 속성 페이지를 사용하여 Language를 재정의할 수 있습니다. Windows 클라이언트에서 지원하는 모든 언어를 포함하여 더 많은 언어를 선택할 수 있습니다. 인스턴스 수준에서 설정할 경우 서버에서는 Language에 따라 나중에 배포되는 모든 데이터베이스의 로캘이 결정됩니다. 예를 들어 Language를 독일어로 설정하면 인스턴스에 배포되는 모든 데이터베이스의 Language 속성은 독일어 LCID를 나타내는 1031입니다.

Language 속성 값은 LCID(로캘 ID)입니다.

유효한 값에는 드롭다운 목록에 표시되는 LCID가 모두 포함됩니다. Management Studio 및 SQL Server Data Tools에서 LCID는 해당하는 문자열로 표시됩니다. 도구와 관계없이 Language 속성이 노출될 때마다 같은 언어가 나타납니다. 동일한 언어 목록을 포함하면 모델 전체에서 일관되게 번역을 구현 및 테스트할 수 있습니다.

Analysis Services는 언어를 이름별로 나열하지만 속성에 대해 저장되는 실제 값은 LCID입니다. 언어 속성을 프로그래밍 방식 또는 msmdsrv.ini 파일을 통해 설정할 때 LCID(로캘 ID)를 값으로 사용합니다. LCID는 언어 ID, 정렬 ID 및 특정 언어를 식별하도록 예약된 비트로 구성된 32비트 값입니다. Analysis Services에서는 LCID를 사용하여 Analysis Services 인스턴스 및 개체에 대해 선택된 언어를 지정합니다.

16진수 또는 10진수 형식을 사용하여 LCID를 설정할 수 있습니다. Language 속성에 대해 유효한 값의 몇 가지 예는 다음과 같습니다.

  • 0x0409 또는 1033(영어(미국))

  • 0x0411 또는 1041(일본어)

  • 0x0407 또는 1031(독일어(독일)

  • 0x0416 또는 1046(포르투갈어(브라질))

더 많은 예를 확인하려면 Microsoft에서 할당된 로캘 ID(영문)를 참조하세요. 자세한 배경 정보는 인코딩 및 코드 페이지를 참조하세요.

[!참고]

Language 속성은 시스템 메시지를 반환하거나 사용자 인터페이스에 문자열을 표시하는 데 사용되는 언어를 결정하지 않습니다. 오류, 경고 및 메시지는 Office 및 Office 365에서 지원되는 모든 언어로 지역화되고 클라이언트 연결에서 지원되는 로캘 중 하나를 지정할 때 자동으로 사용됩니다.

Analysis Services의 데이터 정렬 지원

Analysis Services에서는 Windows 및 이진 데이터 정렬만 사용합니다. 레거시 SQL Server 데이터 정렬은 사용하지 않습니다. 큐브 내에서 단일 데이터 정렬은 특성 수준의 번역을 제외하고 전체적으로 사용됩니다. 특성 번역 정의 방법은 번역(Analysis Services)을 참조하십시오.

데이터 정렬은 이중 언어 스크립트에서 개체 식별자를 제외한 모든 문자열의 대/소문자 구분을 제어합니다. 개체 식별자에서 대문자와 소문자를 사용하면 개체 식별자의 대/소문자 구분이 데이터 정렬에서가 아니라 Analysis Services에서 결정된다는 사전 경고가 표시됩니다. 영어 스크립트로 작성된 개체 식별자는 데이터 정렬과 관계없이 항상 대/소문자를 구분하지 않습니다. 키릴 자모 및 기타 이중 언어는 이와 반대입니다(항상 대/소문자 구분). 자세한 내용은 세계화 팁 및 모범 사례(Analysis Services)를 참조하세요.

각 서비스에 대해 선택한 정렬 옵션에서 패리티를 유지한다면 Analysis Services의 데이터 정렬은 SQL Server 관계형 데이터베이스 엔진의 데이터 정렬과 호환됩니다. 예를 들어 관계형 데이터베이스에서 악센트를 구분하면 큐브를 같은 방식으로 구성해야 합니다. 데이터 정렬 설정이 달라지면 문제가 발생할 수 있습니다. 예제 및 해결 방법에 대해서는 데이터 정렬에 따라 유니코드 문자열의 공백이 다르게 처리됨(영문)을 참조하세요. 데이터 정렬 및 데이터베이스 엔진에 대한 자세한 내용은 데이터 정렬 및 유니코드 지원을 참조하세요.

데이터 정렬 유형

Analysis Services에서는 두 가지 데이터 정렬 유형을 지원합니다.

  • Windows 데이터 정렬

    Windows 데이터 정렬은 언어의 언어 및 문화 특성을 기준으로 문자를 정렬합니다. Windows에서는 문자를 정렬하고 비교하기 위한 공통 영문자 및 규칙을 공유하는 언어가 많기 때문에 데이터 정렬이 로캘보다 더 많습니다. 예를 들어 모든 포르투갈어 및 영어 Windows 로캘을 포함한 33개의 Windows 로캘은 Latin1 코드 페이지(1252)를 사용하고 문자 정렬 및 비교 시 공용 규칙 집합을 따릅니다.

  • 이진 데이터 정렬(BIN 또는 BIN2)

    이진 데이터 정렬은 언어 값이 아니라 유니코드 코드 포인트에 따라 정렬합니다. 예를 들어 Latin_1_General_BIN과 Japanese_BIN은 유니코드 데이터에서 사용할 때 동일한 정렬 결과를 생성합니다. 모든 대문자의 코드 포인트가 전체적으로 소문자의 코드 포인트보다 더 높기 때문에 언어 정렬에서는 aAbBcCdD 같은 결과가 생성되지만 이진 정렬은 ABCDabcd가 됩니다.

정렬 순서 옵션

정렬 옵션은 대/소문자, 악센트, 일본어 가나 및 전자/반자 구분에 따라 정렬 및 비교 규칙을 구체화하는 데 사용됩니다. 예를 들어 Analysis Services의 Collation 구성 속성 기본값이 Latin1_General_AS_CS이면 Latin1_General 데이터 정렬에 악센트 구분, 대/소문자 구분 정렬 순서를 사용하도록 지정됩니다.

BIN 및 BIN2는 다른 정렬 옵션과 함께 사용할 수 없으며, BIN 또는 BIN2를 사용하려면 악센트 구분에 대한 정렬 옵션을 선택 취소합니다. 마찬가지로 BIN2를 선택하면 대/소문자 구분, 대/소문자 구분 안 함, 악센트 구분, 악센트 구분 안 함, 일본어 가나 구분 및 전자/반자 구분 옵션을 사용할 수 없습니다.

다음 표에서는 Analysis Services에 대한 Windows 데이터 정렬 순서 옵션 및 관련 접미사를 설명합니다.

정렬 순서(접미사)

정렬 순서 설명

이진(_BIN) 또는 BIN2(_BIN2)

SQL Server에는 두 가지 유형의 이진 데이터 정렬 즉, 이전 BIN 데이터 정렬과 최신 BIN2 데이터 정렬이 있습니다. BIN2 데이터 정렬에서 모든 문자는 코드 포인트에 따라 정렬됩니다. BIN 데이터 정렬에서 첫 번째 문자만 코드 포인트에 따라 정렬되며 나머지 문자는 바이트 값에 따라 정렬됩니다. (Intel 플랫폼은 little endian 아키텍처이므로, 유니코드 문자는 항상 바이트 스왑 상태로 저장됩니다.)

유니코드 데이터 형식에서의 이진 데이터 정렬의 경우 데이터 정렬 시 로캘은 고려되지 않습니다. 예를 들어 Latin_1_General_BIN과 Japanese_BIN은 유니코드 데이터에서 사용할 때 동일한 정렬 결과를 생성합니다.

이진 정렬 순서는 대/소문자와 악센트를 구분합니다. 이진은 가장 빠른 정렬 순서입니다. 자세한 내용은 BIN 및 BIN2 데이터 정렬 사용 지침를 참조하세요.

대/소문자 구분(_CS)

대/소문자를 구분합니다. 이 정렬 순서를 선택하면 소문자가 대문자보다 먼저 정렬됩니다. _CI를 지정하여 대/소문자를 구분하지 않도록 명시적으로 설정할 수 있습니다. 데이터 정렬 관련 대/소문자 설정은 차원, 큐브 및 기타 개체의 ID와 같은 개체 식별자에 적용되지 않습니다. 자세한 내용은 세계화 팁 및 모범 사례(Analysis Services)를 참조하세요.

악센트 구분(_AS)

악센트가 있는 문자와 악센트가 없는 문자를 구분합니다. 예를 들어 'a'와 'ấ'는 같지 않습니다. 이 옵션을 선택하지 않으면 Analysis Services는 정렬할 때 악센트가 있는 문자와 악센트가 없는 문자가 동일한 것으로 간주합니다. _AI를 지정하여 악센트를 구분하지 않도록 명시적으로 설정할 수 있습니다.

일본어 가나 구분(_KS)

일본어 가나 문자의 두 가지 유형인 히라가나와 가타카나를 구분할지 여부를 지정합니다. 이 옵션을 선택하지 않으면 Analysis Services는 정렬할 때 히라가나 문자와 가타가나 문자가 동일한 것으로 간주합니다. 가나를 구분하지 않고 정렬할 때는 정렬 순서 접미사가 없습니다.

전자/반자 구분(_WS)

같은 문자라도 싱글바이트 문자와 더블바이트 문자를 구분합니다. 이 옵션을 선택하지 않으면 Analysis Services는 정렬할 때 싱글바이트와 더블바이트로 표시된 같은 문자를 동일한 것으로 간주합니다. 전자/반자를 구분하지 않고 정렬할 때는 정렬 순서 접미사가 없습니다.

인스턴스에서 기본 언어 또는 데이터 정렬 변경

기본 언어 및 데이터 정렬은 설치 중에 설정되지만 설치 후 구성 중에 변경할 수 있습니다. 인스턴스 수준에서 데이터 정렬을 변경하는 작업은 중요하므로 다음 요구 사항이 제공됩니다.

  • 서비스가 다시 시작됩니다.

  • 기존 개체의 데이터 정렬 설정을 업데이트합니다. 데이터 정렬 설정은 개체가 만들어질 때 한 번 상속됩니다. 데이터 정렬을 나중에 변경하려면 수동으로 변경해야 합니다. 모델 전체에 데이터 정렬 변경 내용을 전파하는 방법에 대한 팁은 Change collation within a data model using XMLA을 참조하세요.

  • 데이터 정렬이 업데이트되고 나서 파티션 및 차원을 다시 처리합니다.

SQL Server Management Studio 또는 AMO PowerShell을 사용하여 서버 수준에서 기본 언어 또는 데이터 정렬을 변경할 수 있습니다. 또는 msmdsrv.ini 파일에서 <Language> 및 <CollationName> 설정을 수정하여 언어 LCID를 지정할 수 있습니다.

  1. Management Studio에서 서버 이름을 마우스 오른쪽 단추로 클릭하고 속성 | 언어/데이터 정렬을 선택합니다.

  2. 정렬 옵션을 선택합니다. 이진 또는 이진 2의 하나를 선택하려면 먼저 악센트 구분 확인란의 선택을 취소합니다.

    데이터 정렬 및 언어는 완전히 독립적인 설정입니다. 한 속성을 변경해도 하면 공통 조합을 표시하도록 다른 속성 값이 필터링되지 않습니다.

  3. 새 데이터 정렬을 사용하도록 데이터 모델을 업데이트합니다(다음 섹션 참조).

  4. 서비스를 다시 시작합니다.

큐브에서 언어 또는 데이터 정렬 변경

  1. 솔루션 탐색기에서 큐브를 두 번 클릭하여 큐브 디자이너에서 엽니다.

  2. 측정값 또는 차원 창에서 최상위 노드를 선택합니다. 두 창 중 하나에 대한 최상위 개체는 큐브입니다.

  3. 속성에서 Language 및 Collation을 설정합니다. 선택한 값은 큐브 차원 및 측정값을 비롯한 모든 큐브 개체에서 사용되고 처리 및 쿼리 작업에 영향을 미칩니다.

    큐브 내에서 개체에 대한 대체 언어 및 데이터 정렬 속성을 포함하려면 번역을 사용해야 합니다. 자세한 내용은 번역(Analysis Services)를 참조하세요.

XMLA를 사용하여 데이터 모델 내에서 언어 및 데이터 모델 변경

언어 및 데이터 정렬 설정은 개체가 만들어질 때 한 번 상속됩니다. 이러한 속성을 나중에 변경하려면 수동으로 변경해야 합니다. XMLA 스크립트에서 ALTER 명령을 사용하여 여러 개체에 대한 데이터 정렬을 빠르게 변경할 수 있습니다.

기본적으로 데이터 정렬은 데이터베이스 수준에서 한 번 설정됩니다. 나머지 개체 계층 구조에도 상속되는 것으로 간주합니다. 개별 차원 특성에서 허용되는 개체에 대한 Collation을 큐브 내에서 명시적으로 설정하면 이 속성이 XMLA 정의에 표시됩니다. 그렇지 않으면 최상위 데이터 정렬 속성만 존재합니다.

XMLA를 사용하여 기존 데이터베이스를 수정하기 전에 데이터베이스와 데이터베이스 빌드에 사용되는 원본 파일이 일치해야 합니다. 예를 들어 XMLA를 사용하여 개념 증명 테스트를 위해 언어 또는 데이터 정렬을 빠르게 변경하고 나서 추가로 변경 내용을 원본 파일에 적용하여(Change the language or collation on a cube 참조) 기존 작동 절차를 통해 솔루션을 재배포할 수 있습니다.

  1. Management Studio에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 데이터베이스 스크립팅 | ALTER To | 새 쿼리 편집기 창을 선택합니다.

  2. 기존 언어 또는 데이터 정렬을 검색하고 대체 값으로 바꿉니다.

  3. F5 키를 눌러 스크립트를 실행합니다.

  4. 큐브를 다시 처리합니다.

EnableFast1033Locale을 통해 영어 로캘에 대한 성능 향상

영어(미국) 식별자(0x0409 또는 1033)를 Analysis Services 인스턴스의 기본 언어로 사용하는 경우 이 언어 식별자에만 사용 가능한 고급 구성 속성인 EnableFast1033Locale 구성 속성을 설정하여 성능상 이점을 추가로 얻을 수 있습니다. 이 속성의 값을 true로 설정하면 Analysis Services가 문자열 해시 및 비교에 보다 빠른 알고리즘을 사용할 수 있습니다. 구성 속성 설정 방법은 Analysis Services에서 서버 속성 구성을 참조하십시오.

Analysis Services의 GB18030 지원

GB18030은 중국에서 사용하는 별개의 중국어 인코딩 표준입니다. GB18030에서 문자 길이는 1바이트, 2바이트 또는 4바이트일 수 있습니다. 외부 원본에서 데이터를 처리할 때 Analysis Services에서는 데이터가 변환되지 않습니다. 데이터는 유니코드로 저장됩니다. 쿼리 시 클라이언트 OS 설정에 따라 텍스트 데이터가 쿼리 결과로 반환될 때 Analysis Services 클라이언트 라이브러리(특히 MSOLAP.dll OLE DB 공급자)를 통해 GB18030 변환이 수행됩니다. 데이터베이스 엔진도 GB18030을 지원합니다. 자세한 내용은 데이터 정렬 및 유니코드 지원를 참조하십시오.

참고 항목

개념

Analysis Services 다차원에 대한 전역화 시나리오

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

데이터 정렬 및 유니코드 지원