Поделиться через


Советы и рекомендации по глобализации (Analysis Services)

Применимо для следующих объектов: Только многомерные

Эти советы и рекомендации помогут повысить переносимость решений бизнес-аналитики и избежать ошибок, непосредственно связанных с языками и параметрами сортировки.

  • Используйте схожие параметры сортировки по всему стеку

  • Общие рекомендации для параметров сортировки

  • Учет регистра в идентификаторах объектов

  • Тестирование языкового стандарта с помощью Excel и SQL Server Profiler

  • Написание запросов многомерных выражений в решении, содержащем переводы

  • Написание запросов многомерных выражений, содержащих значения даты и времени

Используйте схожие параметры сортировки по всему стеку

Если возможно, старайтесь использовать в Службы Analysis Services те же параметры сортировки, что и в ядре СУБД, добиваясь соответствия в ширине символов, в учете регистра и в учете диакритических знаков.

Каждая служба имеет свои собственные параметры сортировки. По умолчанию для ядра СУБД используется SQL_Latin1_General_CP1_CI_AS, а для Analysis Services — Latin1_General_AS. Значения по умолчанию совместимы с точки зрения регистра, ширины и учета диакритических знаков. Помните, что если использовать разные параметры сортировки, то можно столкнуться с проблемами, при которых свойства параметров сортировки будут существенно различаться.

Даже если параметры сортировки функционально эквивалентны, может возникнуть ситуация, когда каждая служба будет по-разному интерпретировать пустое место в любом месте строки.

Символ пробела является "особым случаем", поскольку он может быть представлен и однобайтовым, и двухбайтовым символом в Юникоде. В реляционном ядре две составные строки, разделенные пробелами, одна однобайтовым, а другая двухбайтовым, считаются идентичными. В службах Analysis Services во время обработки эти же две составные строки не будут считаться идентичными, вторая строка будет помечена как дубликат.

Дополнительные сведения и рекомендуемые обходные пути см. в разделе Пробелы в строках Юникода обрабатываются по-разному в зависимости от параметров сортировки.

Общие рекомендации для параметров сортировки

В Analysis Services всегда представлен полный список всех доступных языков и параметров сортировки; список параметров сортировки не отфильтровывается в зависимости от выбранного языка. Обязательно выберите пригодное для работы сочетание.

Некоторые из наиболее часто используемых параметров сортировки перечислены в следующем списке.

Этот список следует считать основой для дальнейшей работы, но не окончательной рекомендацией, исключающей другие варианты. Может оказаться, что для ваших данных лучше всего подходят параметры сортировки, не рекомендованные явным образом. Тщательное тестирование является единственным способом проверить правильность сортировки и сравнения данных. При тестировании параметров сортировки всегда запускайте нагрузку по обработке и по запросам.

  • Latin1_General_100_AS часто используется для приложений, использующих 26 букв основного латинского алфавита ISO.

  • В языках стран Северной Европы, где встречаются скандинавские буквы (например, ø), можно использовать Finnish_Swedish_100.

  • В языках Восточной Европы, например в русском, часто используется Cyrillic_General_100.

  • Китайский язык и параметры сортировки различаются в зависимости от региона, но чаще всего это либо китайский (упрощенное письмо), либо китайский (традиционное письмо).

    В КНР и Сингапуре служба поддержки Майкрософт обычно применяет китайский (упрощенное письмо) и порядок сортировки пиньинь. Рекомендуемые параметры сортировки: Chinese_PRC (для SQL Server 2000), Chinese_PRC_90 (для SQL Server 2005) или Chinese_Simplified_Pinyin_100 (SQL Server 2008 и более поздних версий).

    На Тайване чаще используется китайский (Тайвань), а рекомендуемый порядок сортировки основывается на количестве штрихов: Chinese_Taiwan_Stroke (для SQL Server 2000), Chinese_Taiwan_Stroke_90 (для SQL Server 2005) или Chinese_Traditional_Stroke_Count_100 (SQL Server 2008 и более поздних версий).

    Для других регионов (например, Гонконг и Макао) используется китайский (традиционное письмо). Для сортировке в Гонконге часто используется Chinese_Hong_Kong_Stroke_90 (в SQL Server 2005). В Макао довольно часто встречается 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 с пакетом обновления 2 (SP2) учет регистра в идентификаторах объектов действует независимо от параметров сортировки, но поведение зависит от языка.

Письменность языка

Учет регистра букв

Основной латинский алфавит

Идентификаторы объектов, выраженные с помощью латинской письменности (любая из 26 английских заглавных или строчных букв), обрабатываются без учета регистра вне зависимости от параметров сортировки. Например следующие идентификаторы объектов считаются идентичными: 54321abcdef, 54321ABCDEF, 54321AbCdEf. На внутреннем уровне службы Analysis Services обрабатывают символы в строке как символы верхнего регистра, а затем выполняют простое побайтное сравнение, независимое от языка.

Обратите внимание, что затрагиваются только 26 символов. У западноевропейских языков со скандинавскими символами дополнительные символы не будут в верхнем регистре.

Кириллица, греческий, коптский, армянский

В идентификаторах объектов на языках с письмом, отличным от латинского, где строчные и заглавные буквы различаются, всегда учитывается регистр. Например, "Измерение" и "измерение" считаются двумя разными значениями, хотя различаются только регистром первой буквы.

Влияния учета регистра в идентификаторах объектов

Различия регистров, описанные в таблице, касаются только идентификаторов объектов, но не имен объектов. Если вы заметите изменения в работе решения (после установки SQL Server 2012 SP2 или более поздней версии), то это изменение, по всей видимости, будет связано с обработкой. Идентификаторы объектов не влияют на запросы. Для обоих языков запросов (DAX и MDX) механизм обработки формул использует имя объекта (а не идентификатор).

ПримечаниеПримечание

Изменения кода, связанные с учета регистра, были критическими изменениями для некоторых приложений. Подробнее см. в разделе Критические изменения функций служб Analysis Services в SQL Server 2012.

Тестирование языкового стандарта с помощью Excel, SQL Server Profiler и SQL Server Management Studio

При тестировании переводов соединение должно указывать LCID перевода. Согласно документу Получение другого языка из служб SSAS в Excel, можно использовать Excel для тестирования переводов.

Это можно сделать вручную, отредактировав 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 | Параметры перейдите на вкладку Дополнительные параметры соединения.

  • Введите Local Identifier=1036 и нажмите кнопку Подключение.

  • Выполните запрос MDX к базе данных Adventure Works. Результаты запроса должны быть переводами на французский.

    Запрос многомерных выражений с переводом на французский в среде SSMS

Написание запросов многомерных выражений в решении, содержащем переводы

Переводы предоставляют отображаемые сведения об именах объектов служб Службы Analysis Services, однако идентификаторы тех же самых объектов не переводятся. По возможности для объектов служб Службы Analysis Services необходимо использовать идентификаторы и ключи, а не переведенные заголовки и имена. Например, для обеспечения мобильности в нескольких языках необходимо использовать ключи элементов, а не имена элементов для инструкций многомерных выражений и скриптов.

ПримечаниеПримечание

Помните, что в именах табличных объектов регистр не учитывается никогда, независимо от параметров сортировки. В именах многомерных объектов, напротив, регистр учитывается таким же образом, как в параметрах сортировки. Поскольку регистр учитывается только в именах многомерных объектов, убедитесь, что все запросы MDX, ссылающиеся на многомерные объекты, имеют правильный регистр.

Написание запросов многомерных выражений, содержащих значения даты и времени

Следующие рекомендации помогут удобнее переносить запросы MDX на основе даты и времени на разные языки:

  1. Использовать числовые части для сравнения и операций

    При выполнении операций и сравнений месяцев и дней недели используйте числовые части даты и времени, а не строковые эквиваленты (например, используйте MonthNumberofYear вместо MonthName). Числовые значения в меньше степени затрагиваются различиями в переводах.

  2. Используйте строковые эквиваленты в результирующем наборе

    При построении результирующих наборов, видимых конечным пользователям, используйте строки (например, MonthName), чтобы многоязычная аудитория могла пользоваться предоставленными переводами.

  3. Используйте формат даты ISO для универсальных данных даты и времени

    Один специалист по Analysis Services рекомендует следующее: "Я всегда использую формат даты ISO yyyy-mm-dd для всех строк дат, которые я передаю в запросах в SQL или MDX, поскольку этот формат однозначен и работает вне зависимости от региональных параметров сервера и клиента. Я согласен, что сервер должен следовать своим региональным настройкам при анализе дат в неоднозначном формате, но я также думаю, что раз уж есть вариант, исключающий интерпретации, то лучше его и использовать".

  4. Use the Format function to enforce a specific format, regardless of regional language settings

    В следующем запросе MDX, взятом из публикации на форуме, показано использование параметра Format для возврата данных в определенном формате вне зависимости от базовых региональных параметров.

    См. SSAS 2012 формирует неверные данные (публикация Network Steve на форуме).

    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, адаптированных к международному использованию