Терминология параметров сортировки

Чтобы воспользоваться всеми преимуществами языковой поддержки SQL Server 2005, следует ознакомиться с терминами, описанными в этом разделе.

Термины

  • Кодовая страница
  • Параметры сортировки
  • Тип данных
  • Глобализация
  • Языковой стандарт
  • Порядок чтения
  • Порядок сортировки
  • Юникод

Кодовая страница

Кодовая страница — это упорядоченный набор символов данного набора символов, в котором числовой индекс или значение элемента кода связано с каждым символом. Кодовую страницу Microsoft Windows часто называют набором символов или кодировкой. Кодовые страницы обеспечивают поддержку наборов символов и раскладок клавиатуры, применяемых в различных языковых стандартах Windows.

См. также:Установка кодовой страницы клиента

В начало

Параметры сортировки

Параметры сортировки задают битовые шаблоны, представляющие в наборе данных каждый символ. Кроме того, параметры сортировки определяют правила сортировки и сравнения данных. SQL Server 2005 поддерживает хранение объектов с различными параметрами сортировки в одной базе данных, и у каждого столбца в базе данных SQL Server может быть собственный набор параметров сортировки. Для столбцов в кодировке, отличной от Юникода, свойство параметров сортировки задает кодовую страницу для данных и, соответственно, возможность представления символов. Данные можно легко перемещать между столбцами в Юникоде. Данные между столбцами в форматах, отличных от Юникода, обычным образом перемещать нельзя, их следует преобразовывать с учетом текущей кодовой страницы.

Результат выполнения инструкции Transact-SQL может различаться в зависимости от контекста различных баз данных, в каждой из которых имеются свои параметры сортировки. Рекомендуется по возможности использовать стандартный набор параметров сортировки в рамках всей организации. Использование стандартных свойств параметров сортировки на всех компьютерах организации устраняет необходимость явно указывать параметры сортировки в каждом символьном выражении или выражении Юникода. Если необходимо работать с объектами, имеющими различные параметры сортировки и кодовые страницы, следует создавать запросы с учетом очередности параметров сортировки. Дополнительные сведения см. в разделе Очередность параметров сортировки (Transact-SQL).

Характеристики параметров сортировки учитывают язык, регистр, диакритические знаки, тип японской азбуки, а также ширину символов.

В параметры сортировки SQL Server 2005 входят следующие типы группирования.

  • Параметры сортировки Windows
    Параметры сортировки Windows определяют правила хранения символьных данных на основе соответствующего языкового стандарта Windows. Для параметров сортировки Windows сравнение данных в формате, отличном от Юникода, реализовано с помощью такого же алгоритма, как и для данных в Юникоде. Базовые правила параметров сортировки Windows задают алфавит или язык, используемый при сортировке по словарю, а также кодовую страницу, используемую для хранения символьных данных не в Юникоде. Сортировка в Юникоде и в других форматах совместима со строковым сравнением в соответствующей версии Windows. Это обеспечивает согласованность типов данных в SQL Server, а также позволяет разработчикам сортировать строки в их приложениях с помощью тех же правил, что и в SQL Server, то есть путем вызова функции CompareStringW из Microsoft Win32 API. Дополнительные сведения см. в разделе Настройка параметров сортировки в программе установки.
  • Двоичные параметры сортировки
    В двоичных параметрах сортировки данные сортируются на основе последовательности закодированных значений, определяемых языковым стандартом и типом данных. Двоичные параметры сортировки в SQL Server определяют языковой стандарт и используемую кодовую страницу ANSI, применяя двоичный порядок сортировки. Двоичные параметры сортировки полезно применять для повышения производительности приложений вследствие относительной простоты. Для типов данных, отличных от Юникода, сравнение данных производится на основе элементов кода, определенных кодовой страницей ANSI. Типы данных в Юникоде сравниваются на основе элементов кода Юникода. Для двоичных параметров сортировки на основе типов данных Юникода при сортировке данных языковой стандарт не учитывается. Например, параметры сортировки Latin_1_General_BIN и Japanese_BIN дают одинаковые результаты сортировки, если используются с данными в Юникоде.

    Прежние двоичные параметры сортировки в SQL Server для данных в Юникоде выполняли неполное сравнение каждого элемента кода, при этом в предыдущей версии SQL Server первый символ сравнивался как принадлежащий типу WCHAR, после чего производилось побайтовое сравнение. В целях обратной совместимости семантика существующих двоичных параметров сортировки изменена не будет.

    Двоичные параметры сортировки в этом выпуске SQL Server включают новый набор параметров сортировки со сравнением исключительно элементов кода. Пользователям доступна возможность миграции на новые двоичные параметры сортировки для получения преимущества реального сравнения элементов кода. При разработке новых приложений рекомендуется использовать новые двоичные параметры сортировки. Новым суффиксом BIN2 определяются имена наборов параметров сортировки, реализующих новую семантику параметров сортировки элементов кода. Кроме того, добавлен новый флаг сравнения, соответствующий BIN2 для новой двоичной сортировки. Дополнительные сведения см. в разделе Использование двоичных параметров сортировки.

  • Параметры сортировки SQL Server
    Параметры сортировки SQL Server обеспечивают совместимость порядка сортировки с более ранними версиями SQL Server. Параметры сортировки SQL Server основаны на традиционных порядках сортировки SQL Server для данных в формате, отличном от Юникода, например для данных типов char и varchar, определенных в SQL Server. Правила сортировки словаря для данных в формате, отличном от Юникода, не совместимы ни с какими процедурами сортировки операционных систем Windows, однако сортировка данных в Юникоде совместима с правилами сортировки определенной версии Windows. Поскольку параметры сортировки SQL Server применяют для данных в Юникоде и в отличных от него форматах разные правила сортировки, то при сравнении одних и тех же данных могут получиться разные результаты, которые будут зависеть от базового типа данных. Дополнительные сведения см. в разделе Использование параметров сортировки SQL.

    ms143726.note(ru-ru,SQL.90).gifПримечание.
    При обновлении версии экземпляра SQL Server можно задать параметры сортировки SQL Server, чтобы обеспечить совместимость с существующими экземплярами SQL Server. Поскольку параметры сортировки по умолчанию для экземпляра SQL Server определяются во время установки, очень важно правильно настроить параметры сортировки в следующих случаях.
    • Когда код приложения каким-то образом зависит от поведения предыдущих параметров сортировки SQL Server.
    • Планируется использование репликации SQL Server 2005 с уже установленными SQL Server 6.5 или SQL Server 7.0.
    • Необходимо хранить символьные данные, в которых используется несколько языков.

SQL Server 2005 поддерживает настройку параметров сортировки на следующих уровнях экземпляра SQL Server 2005.

  • Параметры сортировки уровня сервера
    Параметры сортировки по умолчанию для экземпляра SQL Server задаются во время установки. Параметры сортировки по умолчанию для экземпляра также становятся параметрами сортировки по умолчанию для системных баз данных: master, model, tempdb, msdb и distribution. После назначения параметров сортировки любому объекту, отличному от столбца или базы данных, его можно будет изменить только с помощью удаления и повторного создания объекта. Вместо изменения параметров сортировки по умолчанию для экземпляра SQL Server можно задать параметры сортировки при создании новой базы данных или столбца базы данных.

    Запрос серверных параметров сортировки для экземпляра SQL Server выполняется с помощью следующей функции SERVERPROPERTY Transact-SQL.

    SELECT CONVERT (varchar, SERVERPROPERTY('collation'))
    

    Запрос всех доступных на сервере параметров сортировки выполняется с помощью следующей встроенной функции fn_helpcollations().

    SELECT * from ::fn_helpcollations()
    
  • Параметры сортировки уровня базы данных
    При создании базы данных можно задать ее параметры сортировки по умолчанию с помощью предложения COLLATE в инструкции CREATE DATABASE. Если при создании базы данных не были указаны параметры сортировки, то базе данных назначаются параметры сортировки по умолчанию для базы данных model. Параметры сортировки по умолчанию для базы данных model совпадают с параметрами сортировки по умолчанию для экземпляра SQL Server.

    Параметры сортировки пользовательской базы данных можно изменить с помощью инструкции ALTER DATABASE следующим образом.

    ALTER DATABASE myDB COLLATE Greek_CS_AI
    

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

    SELECT CONVERT (varchar, DATABASEPROPERTYEX('database_name','collation'))
    
    ms143726.note(ru-ru,SQL.90).gifПримечание.
    Изменение параметров сортировки уровня базы данных не влияет на параметры сортировки уровня пользователя, таблицы и столбцов.
  • Параметры сортировки уровня столбцов
    При создании таблицы параметры сортировки для каждого столбца символьной строки можно указывать с помощью предложения COLLATE инструкции CREATE TABLE. Если при создании таблицы не были указаны параметры сортировки, то столбцу присваиваются параметры сортировки по умолчанию для базы данных.

    Параметры сортировки для столбца можно изменить с помощью инструкции ALTER TABLE следующим образом.

    ALTER TABLE myTable ALTER COLUMN mycol NVARCHAR(10) COLLATE Greek_CS_AI
    
  • Параметры сортировки уровня выражений
    Параметры сортировки уровня выражения задаются при выполнении инструкции, и они влияют на способ возврата результирующего набора. Это позволяет сортировать результаты с помощью предложения ORDER BY с учетом специфики конкретного языка. Для реализации параметров сортировки уровня выражения предложение COLLATE применяется следующим образом.

    SELECT name FROM customer ORDER BY name COLLATE Latin1_General_CS_AI
    

В начало

Тип данных

Тип данных — это определение, которое указывает диапазон значений, операции, которые могут выполняться над значениями, а также способ хранения значений в памяти компьютера. Определение типов данных позволяет SQL Server предсказуемо управлять данными. char, varchar и text относятся к типам данных с символами в формате, отличном от Юникода. Типы данных в формате Юникод используют представление символов в формате Юникод. К ним относятся следующие типы: nchar, nvarchar и ntext. В приложениях рекомендуется использовать данные в Юникоде, особенно если данные хранятся на нескольких языках.

См. также:Типы данных (компонент Database Engine), Типы данных (Transact-SQL), Типы данных служб Integration Services

В начало

Глобализация

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

См. также:Вопросы международного использования в SQL Server

В начало

Языковой стандарт

Языковой стандарт — это набор сведений, связанный с определенным регионом или культурой: имя и идентификатор языка, шрифт, применяемый для записи на нем, а также национальные стандарты. SQL Server 2005 поддерживает все 135 языковых стандартов, поддерживаемых Windows XP. Среди них пять языковых стандартов для китайского языка (КНР, Макао, ОАР Гонконг, Сингапур и Тайвань), тринадцать стандартов для английского языка (Австралия, Белиз, Великобритания, Зимбабве, Ирландия, Канада, Карибские о-ва, Новая Зеландия, США, Тринидад, Филиппины, ЮАР и Ямайка), а также шесть стандартов для французского языка (Бельгия, Канада, Люксембург, Монако, Франция и Швейцария).

В приведенной ниже таблице показаны некоторые различия между четырьмя основными языковыми стандартами, поддерживаемыми Windows.

Языковой стандарт Английский (США) Французский (Франция) Японский Объединенные Арабские Эмираты

Страна или регион

США

Франция

Япония

Объединенные Арабские Эмираты

Язык

Английский

Французский

Японский

Арабский

Шрифты письменности

Латинский

Латинский

Кана, кандзи

Арабский

Порядок чтения

Слева направо

Слева направо

Слева направо

Справа налево

Кодовая страница, определяемая Windows

1252

1252

932

1256

Формат времени

13:00

13:00

13:00

13:00

Календарь

Григорианский

Григорианский

Григорианский (локализованный)

Григорианский (локализованный)

Размер страницы по умолчанию

Letter

A4

A4

A4

Разделитель целой и дробной части

.

,

.

,

Разделитель элементов списка

,

;

,

;

Разделитель групп разрядов

,

пробел

,

,

В начало

Порядок чтения

Порядок чтения — это общее направление последовательности текста, которое относится к порядку слов, а не к порядку ввода символов. Например, если в качестве языка ввода с клавиатуры используется арабский язык, то новые символы будут вводиться справа налево. Если язык ввода с клавиатуры имеет латинский алфавит, то новые символы будут появляться слева направо.

В начало

Порядок сортировки

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

См. также:Стили сортировки в параметрах сортировки Windows, Индексы

В начало

Юникод

Юникод представляет алфавитные символы в двухбайтовом виде, что позволяет передавать символами кодировки Юникода почти все письменные языки мира. Юникод был разработан и в настоящее время поддерживается и продвигается некоммерческой организацией Unicode Consortium. Дополнительные сведения см. на веб-узле Unicode Consortium.

Данные на нескольких языках следует всегда хранить в Юникоде (nchar, nvarchar и ntext), а не использовать другие типы данных (char, varchar и text). Применение Юникода позволяет существенно повысить производительность, поскольку требуется выполнять меньше преобразований кодовых страниц. Типы данных, отличные от Юникода, имеют значительные ограничения, поскольку на компьютере, где не применяется Юникод, можно использовать только одну кодовую страницу. Чтобы получить полное представление о трудностях, связанных с применением типов в Юникоде или не в Юникоде, нужно протестировать свой сценарий, измерив разницу производительности для этих двух вариантов в конкретной среде. По меньшей мере, следует стандартизировать параметры сортировки в пределах организации и по возможности развертывать серверы и клиенты с поддержкой Юникода.

В большинстве случаев экземпляр SQL Server будет взаимодействовать с другими серверами или клиентами и сможет применять несколько стандартов доступа к данным. Клиенты SQL Server бывают одного из следующих двух основных типов.

  • Клиенты с поддержкой Юникода, применяющие OLE DB и ODBC версии 3.7 или более поздних.
  • Клиенты без поддержки Юникода, применяющие библиотеку баз данных и ODBC версий 3.6 или более ранних.

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

Сервер Клиент Преимущества или ограничения

Юникод

Юникод

Идеальная конфигурация, поскольку данные в Юникоде будут использоваться во всей системе. Этот сценарий обеспечивает наилучшую производительность и защиту полученных данных от повреждения. Это случай применения Microsoft ActiveX (ADO), OLE DB, а также ODBC версий 3.7 или более поздних.

Юникод

Не Юникод

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

Не Юникод

Юникод

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

Не Юникод

Не Юникод

В этом сценарии очень много ограничений для применения данных на нескольких языках. Можно применять только одну кодовую страницу. Идеальная конфигурация — это сервер и клиенты с поддержкой Юникода.

См. также:Основы Юникода

В начало

См. также

Справочник

Настройка параметров сортировки и поддержка нескольких языков

Справка и поддержка

Получение помощи по SQL Server 2005