Поддержка параметров сортировки и ЮникодаCollation and Unicode support

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data WarehouseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data Warehouse

Параметры сортировки SQL ServerSQL Server предоставляют свойства, управляющие правилами сортировки, учета регистра и диакритических знаков в данных.Collations in SQL ServerSQL Server provide sorting rules, case, and accent sensitivity properties for your data. Параметры сортировки, используемые с символьными типами данных, такими как char или varchar, указывают кодовую страницу и соответствующие символы, которые могут быть представлены для этого типа данных.Collations that are used with character data types, such as char and varchar, dictate the code page and corresponding characters that can be represented for that data type.

Независимо от того, устанавливается ли новый экземпляр SQL ServerSQL Server, восстанавливается ли база данных из резервной копии или сервер соединяется с клиентскими базами данных, важно понимать требования к языковому стандарту, знать порядок сортировки и необходимость учета регистра или диакритических знаков в данных, с которыми вы работаете.Whether you're installing a new instance of SQL ServerSQL Server, restoring a database backup, or connecting server to client databases, it's important to understand the locale requirements, sorting order, and case and accent sensitivity of the data that you're working with. Описание того, как получить список доступных параметров сортировки в экземпляре SQL ServerSQL Server, см. в статье sys.fn_helpcollations (Transact-SQL).To list the collations that are available on your instance of SQL ServerSQL Server, see sys.fn_helpcollations (Transact-SQL).

При выборе параметров сортировки для сервера, базы данных, столбца или выражения данным присваиваются определенные характеристики.When you select a collation for your server, database, column, or expression, you're assigning certain characteristics to your data. Они влияют на многие операции в базе данных.These characteristics affect the results of many operations in the database. Например, если строится запрос с предложением ORDER BY, порядок результирующего набора может зависеть от параметров сортировки, которые применяются к базе данных, или предложения COLLATE на уровне выражения запроса.For example, when you construct a query by using ORDER BY, the sort order of your result set might depend on the collation that's applied to the database or dictated in a COLLATE clause at the expression level of the query.

Для эффективного использования поддержки параметров сортировки в SQL ServerSQL Serverнеобходимо понимать термины, представленные в этой статье, и их связь с характеристиками данных.To best use collation support in SQL ServerSQL Server, you should understand the terms that are defined in this topic and how they relate to the characteristics of your data.

Термины, связанные с параметрами сортировкиCollation terms

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

Параметры сортировки задают битовые шаблоны, представляющие каждый символ в наборе данных.A collation specifies the bit patterns that represent each character in a dataset. Параметры сортировки определяют правила, используемые при сортировке и сравнении данных.Collations also determine the rules that sort and compare data. SQL ServerSQL Server поддерживает хранение объектов с различными параметрами сортировки в одной базе данных.supports storing objects that have different collations in a single database. Для столбцов в кодировке, отличающейся от Юникода, настройка параметров сортировки определяет кодовую страницу данных и соответствующую возможность представления символов.For non-Unicode columns, the collation setting specifies the code page for the data and which characters can be represented. Данные, которые перемещаются между столбцами в форматах, отличных от Юникода, необходимо преобразовывать из исходной кодовой страницы в целевую.The data that you move between non-Unicode columns must be converted from the source code page to the destination code page.

Результат выполнения инструкцииTransact-SQLTransact-SQL может различаться в зависимости от контекста различных баз данных, которые имеют свои параметры сортировки.Transact-SQLTransact-SQL statement results can vary when the statement is run in the context of different databases that have different collation settings. По возможности используйте стандартные параметры сортировки для всей организации.If possible, use a standardized collation for your organization. Тем самым не придется указывать параметры сортировки для каждого символа или выражения Юникода.This way, you don't have to specify the collation in every character or Unicode expression. Если необходимо работать с объектами, имеющими различные параметры сортировки и кодовые страницы, создание запросов должно производиться с учетом очередности параметров сортировки.If you must work with objects that have different collation and code page settings, code your queries to consider the rules of collation precedence. Дополнительные сведения см. в разделе Очередность параметров сортировки (Transact-SQL).For more information, see Collation Precedence (Transact-SQL).

Параметры сортировки могут учитывать регистр, диакритические знаки, тип японской азбуки, ширину символов и знаки выбора варианта.The options associated with a collation are case sensitivity, accent sensitivity, kana sensitivity, width sensitivity, and variation-selector sensitivity. В SQL Server 2019 (15.x)SQL Server 2019 (15.x) появился дополнительный параметр для кодирования UTF-8.SQL Server 2019 (15.x)SQL Server 2019 (15.x) introduces an additional option for UTF-8 encoding.

Эти параметры можно задать путем их добавления к имени параметров сортировки.You can specify these options by appending them to the collation name. Например, параметр Japanese_Bushu_Kakusu_100_CS_AS_KS_WS_UTF8 определяет параметры сортировки с учетом диакритических знаков, регистра, типа японской азбуки, ширины символов и кодировки UTF-8.For example, the collation Japanese_Bushu_Kakusu_100_CS_AS_KS_WS_UTF8 is case-sensitive, accent-sensitive, kana-sensitive, width-sensitive, and UTF-8 encoded. Еще один пример: параметр Japanese_Bushu_Kakusu_140_CI_AI_KS_WS_VSS определяет параметры сортировки без учета регистра, без учета диакритических знаков, с учетом типа японской азбуки, с учетом ширины символов, с учетом знаков выбора варианта и с использованием кодировки не в Юникоде.As another example, the collation Japanese_Bushu_Kakusu_140_CI_AI_KS_WS_VSS is case-insensitive, accent-insensitive, kana-sensitive, width-sensitive, variation-selector-sensitive, and it uses non-Unicode encoding.

В приведенной ниже таблице описывается режим работы, связанный с этими параметрами.The behavior associated with these various options is described in the following table:

ПараметрOption ОписаниеDescription
С учетом регистра (_CS)Case-sensitive (_CS) Различаются буквы верхнего и нижнего регистров.Distinguishes between uppercase and lowercase letters. При выборе этого параметра буквы нижнего регистра при сортировке ставятся перед соответствующими буквами верхнего регистра.If this option is selected, lowercase letters sort ahead of their uppercase versions. Если этот параметр не выбран, параметры сортировки не учитывают регистр.If this option isn't selected, the collation is case-insensitive. То есть при сортировке SQL ServerSQL Server считает буквы верхнего и нижнего регистров и делает их идентичными друг другу.That is, SQL ServerSQL Server considers the uppercase and lowercase versions of letters to be identical for sorting purposes. Можно явно выбрать нечувствительность к регистру, указав параметр _CI.You can explicitly select case insensitivity by specifying _CI.
С учетом диакритических знаков (_AS)Accent-sensitive (_AS) Различаются символы с диакритическими знаками и без них.Distinguishes between accented and unaccented characters. Например, "a" отлично от "ấ".For example, "a" is not equal to "ấ". Если этот параметр не выбран, параметры сортировки не учитывают диакритические знаки.If this option isn't selected, the collation is accent-insensitive. То есть при сортировке SQL ServerSQL Server рассматривает варианты букв с диакритическими знаками и без них как идентичные.That is, SQL ServerSQL Server considers the accented and unaccented versions of letters to be identical for sorting purposes. Можно явно выбрать нечувствительность к диакритическим знакам, указав параметр _АI.You can explicitly select accent insensitivity by specifying _AI.
С учетом типа японской азбуки (_KS)Kana-sensitive (_KS) Различаются два вида японской азбуки: хирагана и катакана.Distinguishes between the two types of Japanese kana characters: Hiragana and Katakana. Если этот параметр не выбран, параметры сортировки не учитывают тип японской азбуки.If this option isn't selected, the collation is kana-insensitive. То есть при сортировке SQL ServerSQL Server рассматривает символы хирагана и катакана как идентичные.That is, SQL ServerSQL Server considers Hiragana and Katakana characters to be equal for sorting purposes. Пропуск этого параметра является единственным способом указания нечувствительности к типу японской азбуки.Omitting this option is the only method of specifying kana-insensitivity.
С учетом ширины символов (_WS)Width-sensitive (_WS) Отличия между символами полной ширины и средней ширины.Distinguishes between full-width and half-width characters. Если этот параметр не выбран, SQL ServerSQL Server принимает отображение одного и того же символа полной ширины и средней ширины как идентичное для целей сортировки.If this option isn't selected, SQL ServerSQL Server considers the full-width and half-width representation of the same character to be identical for sorting purposes. Пропуск этого параметра является единственным способом указания нечувствительности к ширине символов.Omitting this option is the only method of specifying width-insensitivity.
С учетом знаков выбора варианта (_VSS)Variation-selector-sensitive (_VSS) Различаются идеографические знаки выбора варианта в японских параметрах сортировки Japanese_Bushu_Kakusu_140 и Japanese_XJIS_140, появившихся в SQL Server 2017 (14.x);SQL Server 2017 (14.x).Distinguishes between various ideographic variation selectors in the Japanese collations Japanese_Bushu_Kakusu_140 and Japanese_XJIS_140, which are introduced in SQL Server 2017 (14.x);SQL Server 2017 (14.x). Последовательность вариантов состоит из базового знака и дополнительного знака выбора вариантов.A variation sequence consists of a base character plus an additional variation selector. Если этот параметр _VSS не выбран, параметры сортировки не учитывают знак выбора варианта, а сам знак выбора варианта не учитывается при сравнении.If this _VSS option isn't selected, the collation is variation-selector-insensitive, and the variation selector isn't considered in the comparison. То есть при сортировке SQL ServerSQL Server считает символы, основанные на одном базовом символе, но с разными знаками выбора варианта, равнозначными.That is, SQL ServerSQL Server considers characters built upon the same base character with differing variation selectors to be identical for sorting purposes. Дополнительные сведения см. в статье Unicode Ideographic Variation Database (База данных идеографических вариантов Юникода).For more information, see Unicode Ideographic Variation Database.

Параметры сортировки с учетом знаков выбора варианта (_VSS) не поддерживаются в полнотекстовых индексах.Variation-selector-sensitive (_VSS) collations aren't supported in full-text search indexes. Полнотекстовые индексы поддерживают только параметры с учетом диакритических знаков (_AS), типа японской азбуки (_KS) и ширины символов (_WS).Full-text search indexes support only Accent-Sensitive (_AS), Kana-sensitive (_KS), and Width-sensitive (_WS) options. Подсистемы CLR и XML в SQL ServerSQL Server не поддерживают знаки выбора варианта (_VSS).SQL ServerSQL Server XML and CLR engines don't support (_VSS) Variation selectors.
Двоичный (_BIN) 1Binary (_BIN)1 Данные в SQL ServerSQL Server сортируются и сравниваются на основе битовых шаблонов, определенных для каждого символа.Sorts and compares data in SQL ServerSQL Server tables based on the bit patterns defined for each character. Двоичный порядок сортировки учитывает регистр и диакритические знаки.Binary sort order is case-sensitive and accent-sensitive. Двоичный порядок сортировки является самым быстрым.Binary is also the fastest sorting order. Дополнительные сведения см. в разделе Параметры двоичной сортировки в этой статье.For more information, see the Binary collations section in this article.
Элемент двоичного кода (_BIN2) 1Binary-code point (_BIN2)1 Данные в SQL ServerSQL Server сортируются и сравниваются на основе элементов Юникода для данных в Юникоде.Sorts and compares data in SQL ServerSQL Server tables based on Unicode code points for Unicode data. Для типов данных не в Юникоде при выборе BIN2 сравнение производится так же, как и двоичная сортировка.For non-Unicode data, Binary-code point uses comparisons that are identical to those for binary sorts.

Преимуществом использования порядка сортировки BIN2 является то, что приложениям, сравнивающим отсортированные данные SQL ServerSQL Server, не требуется никакой повторной сортировки данных.The advantage of using a Binary-code point sort order is that no data resorting is required in applications that compare sorted SQL ServerSQL Server data. В результате сортировка BIN2 упрощает разработку приложения и увеличивает ожидаемую производительность.As a result, a Binary-code point sort order provides simpler application development and possible performance increases. Дополнительные сведения см. в разделе Параметры двоичной сортировки в этой статье.For more information, see the Binary collations section in this article.
UTF-8 (_UTF8)UTF-8 (_UTF8) Позволяет хранить данные в кодировке UTF-8 в SQL ServerSQL Server.Enables UTF-8 encoded data to be stored in SQL ServerSQL Server. Если этот параметр не выбран, SQL ServerSQL Server использует формат кодировки по умолчанию (не в Юникоде) для подходящих типов данных.If this option isn't selected, SQL ServerSQL Server uses the default non-Unicode encoding format for the applicable data types. Дополнительные сведения см. в разделе Поддержка UTF-8 в этой статье.For more information, see the UTF-8 Support section in this article.

1 Если выбран порядок сортировки BIN или BIN2, параметры с учетом регистра (_CS), диакритических знаков (_AS), типа японской азбуки (_KS) и ширины символов (_WS) недоступны.1 If Binary or Binary-code point is selected, the Case-sensitive (_CS), Accent-sensitive (_AS), Kana-sensitive (_KS), and Width-sensitive (_WS) options are not available.

Примеры параметров сортировкиExamples of collation options

Каждый набор параметров сортировки представляет собой последовательность суффиксов для определения учета регистра, диакритических знаков, ширины символов и типа японской азбуки.Each collation is combined as a series of suffixes to define case-, accent-, width-, or kana-sensitivity. В следующих примерах описан порядок сортировки для различных сочетаний суффиксов.The following examples describe sort order behavior for various combinations of suffixes.

Суффикс параметров сортировки WindowsWindows collation suffix Описание порядка сортировкиSort order description
_BIN1_BIN1 Двоичная сортировкаBinary sort
_BIN21, 2_BIN21, 2 Порядок сортировки элементов двоичного кодаBinary-code point sort order
_CI_AI2_CI_AI2 Без учета регистра, без учета диакритических знаков, без учета типа японской азбуки, без учета ширины символовCase-insensitive, accent-insensitive, kana-insensitive, width-insensitive
_CI_AI_KS2_CI_AI_KS2 Без учета регистра, без учета диакритических знаков, с учетом типа японской азбуки, без учета ширины символовCase-insensitive, accent-insensitive, kana-sensitive, width-insensitive
_CI_AI_KS_WS2_CI_AI_KS_WS2 Без учета регистра, без учета диакритических знаков, с учетом типа японской азбуки, с учетом ширины символовCase-insensitive, accent-insensitive, kana-sensitive, width-sensitive
_CI_AI_WS2_CI_AI_WS2 Без учета регистра, без учета диакритических знаков, без учета типа японской азбуки, с учетом ширины символовCase-insensitive, accent-insensitive, kana-insensitive, width-sensitive
_CI_AS2_CI_AS2 Без учета регистра, с учетом диакритических знаков, без учета типа японской азбуки, без учета ширины символовCase-insensitive, accent-sensitive, kana-insensitive, width-insensitive
_CI_AS_KS2_CI_AS_KS2 Без учета регистра, с учетом диакритических знаков, с учетом типа японской азбуки, без учета ширины символовCase-insensitive, accent-sensitive, kana-sensitive, width-insensitive
_CI_AS_KS_WS2_CI_AS_KS_WS2 Без учета регистра, с учетом диакритических знаков, с учетом типа японской азбуки, с учетом ширины символовCase-insensitive, accent-sensitive, kana-sensitive, width-sensitive
_CI_AS_WS2_CI_AS_WS2 Без учета регистра, с учетом диакритических знаков, без учета типа японской азбуки, с учетом ширины символовCase-insensitive, accent-sensitive, kana-insensitive, width-sensitive
_CS_AI2_CS_AI2 С учетом регистра, без учета диакритических знаков, без учета типа японской азбуки, без учета ширины символовCase-sensitive, accent-insensitive, kana-insensitive, width-insensitive
_CS_AI_KS2_CS_AI_KS2 С учетом регистра, без учета диакритических знаков, с учетом типа японской азбуки, без учета ширины символовCase-sensitive, accent-insensitive, kana-sensitive, width-insensitive
_CS_AI_KS_WS2_CS_AI_KS_WS2 С учетом регистра, без учета диакритических знаков, с учетом типа японской азбуки, с учетом ширины символовCase-sensitive, accent-insensitive, kana-sensitive, width-sensitive
_CS_AI_WS2_CS_AI_WS2 С учетом регистра, без учета диакритических знаков, без учета типа японской азбуки, с учетом ширины символовCase-sensitive, accent-insensitive, kana-insensitive, width-sensitive
_CS_AS2_CS_AS2 С учетом регистра, с учетом диакритических знаков, без учета типа японской азбуки, без учета ширины символовCase-sensitive, accent-sensitive, kana-insensitive, width-insensitive
_CS_AS_KS2_CS_AS_KS2 С учетом регистра, с учетом диакритических знаков, с учетом типа японской азбуки, без учета ширины символовCase-sensitive, accent-sensitive, kana-sensitive, width-insensitive
_CS_AS_KS_WS2_CS_AS_KS_WS2 С учетом регистра, с учетом диакритических знаков, с учетом типа японской азбуки, с учетом ширины символовCase-sensitive, accent-sensitive, kana-sensitive, width-sensitive
_CS_AS_WS2_CS_AS_WS2 С учетом регистра, с учетом диакритических знаков, без учета типа японской азбуки, с учетом ширины символовCase-sensitive, accent-sensitive, kana-insensitive, width-sensitive

1 Если выбран порядок сортировки BIN или BIN2, параметры с учетом регистра (_CS), диакритических знаков (_AS), типа японской азбуки (_KS) и ширины символов (_WS) недоступны.1 If Binary or Binary-code point is selected, the Case-sensitive (_CS), Accent-sensitive (_AS), Kana-sensitive (_KS), and Width-sensitive (_WS) options aren't available.

2 Добавление параметра UTF-8 (_UTF8) позволяет кодировать данные в Юникоде с использованием UTF-8.2 Adding the UTF-8 option (_UTF8) enables you to encode Unicode data by using UTF-8. Дополнительные сведения см. в разделе Поддержка UTF-8 в этой статье.For more information, see the UTF-8 Support section in this article.

Наборы параметров сортировкиCollation sets

SQL ServerSQL Server поддерживает следующие наборы параметров сортировки:supports the following collation sets:

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

Параметры сортировки Windows определяют правила хранения символьных данных на основе соответствующего языкового стандарта системы Windows.Windows collations define rules for storing character data that's based on an associated Windows system locale. Для параметров сортировки Windows сравнение данных в формате, отличном от Юникода, можно реализовать с помощью такого же алгоритма, как и для данных в Юникоде.For a Windows collation, you can implement a comparison of non-Unicode data by using the same algorithm as that for Unicode data. Базовые правила параметров сортировки Windows задают алфавит или язык, используемый при сортировке по словарю.The base Windows collation rules specify which alphabet or language is used when dictionary sorting is applied. Кроме того, они определяют кодовую страницу, используемую для хранения символьных данных не в Юникоде.The rules also specify the code page that's used to store non-Unicode character data. Сортировка в Юникоде и в других форматах совместима со строковым сравнением в соответствующей версии Windows.Both Unicode and non-Unicode sorting are compatible with string comparisons in a particular version of Windows. Тем самым обеспечивается согласованность обработки различных типов данных в SQL ServerSQL Server, а разработчики получают возможность сортировать строки в приложениях по тем же правилам, что и в SQL ServerSQL Server.This provides consistency across data types within SQL ServerSQL Server, and it lets developers sort strings in their applications by using the same rules that are used by SQL ServerSQL Server. Дополнительные сведения см. в статье Имя параметров сортировки Windows (Transact-SQL).For more information, see Windows Collation Name (Transact-SQL).

Параметры двоичной сортировкиBinary collations

При двоичных параметрах сортировки данные сортируются на основе последовательности закодированных значений, определяемых локалью и типом данных.Binary collations sort data based on the sequence of coded values that are defined by the locale and data type. Эти параметры учитывают регистр.They're case-sensitive. Параметры двоичной сортировки в SQL ServerSQL Server определяют используемый языковой стандарт и кодовую страницу ANSI.A binary collation in SQL ServerSQL Server defines the locale and the ANSI code page that's used. При этом принудительно реализуется двоичный порядок сортировки.This enforces a binary sort order. По причине своей относительной простоты параметры двоичной сортировки помогают повысить производительность приложений.Because they're relatively simple, binary collations help improve application performance. Для типов данных не в Юникоде сравнение данных производится на основе кодовых точек, определенных в кодовой странице ANSI.For non-Unicode data types, data comparisons are based on the code points that are defined on the ANSI code page. Типы данных в Юникоде сравниваются на основе элементов кода Юникода.For Unicode data types, data comparisons are based on the Unicode code points. Для параметров двоичной сортировки на основе типов данных Юникода при сортировке данных языковой стандарт не учитывается.For binary collations on Unicode data types, the locale isn't considered in data sorts. Например, параметры сортировки Latin_1_General_BIN и Japanese_BIN дают одинаковые результаты сортировки, если используются с данными в Юникоде.For example, Latin_1_General_BIN and Japanese_BIN yield identical sorting results when they're used on Unicode data. Дополнительные сведения см. в статье Имя параметров сортировки Windows (Transact-SQL).For more information, see Windows Collation Name (Transact-SQL).

В SQL ServerSQL Server имеются два типа параметров двоичной сортировки.There are two types of binary collations in SQL ServerSQL Server:

  • Прежние параметры двоичной сортировки BIN, которые выполняли неполное сравнение кодовых точек для данных в Юникоде.The legacy BIN collations, which performed an incomplete code-point-to-code-point comparison for Unicode data. Эти параметры двоичной сортировки сравнивали первые символы как тип данных WCHAR, а затем следовало побитовое сравнение.These legacy binary collations compared the first character as WCHAR, followed by a byte-by-byte comparison. При использовании параметров сортировки BIN только первый символ сортируется в соответствии с кодовой точкой. Остальные символы сортируются в соответствии с их значениями байта.In a BIN collation, only the first character is sorted according to the code point, and remaining characters are sorted according to their byte values.

  • Новые параметры сортировки BIN2, которые выполняют сравнение исключительно кодовых точек.The newer BIN2 collations, which implement a pure code-point comparison. При использовании параметров сортировки BIN2 все символы сортируются в соответствии с их кодовыми точками.In a BIN2 collation, all characters are sorted according to their code points. Так как платформа Intel не всегда является архитектурой по порядку следования байтов, символы кода Unicode всегда хранятся с перестановкой байтов.Because the Intel platform is a little endian architecture, Unicode code characters are always stored byte-swapped.

Параметры сортировки SQL ServerSQL Server collations

Параметры сортировки SQL ServerSQL Server (SQL_*) имеют обратную совместимость с более ранними версиями SQL ServerSQL Server, с точки зрения порядка сортировки.SQL ServerSQL Server collations (SQL_*) provide sort order compatibility with earlier versions of SQL ServerSQL Server. Правила сортировки словаря для данных в формате, отличном от Юникода, не совместимы ни с какими подпрограммами сортировки операционных систем Windows.The dictionary sorting rules for non-Unicode data are incompatible with any sorting routine that's provided by Windows operating systems. Однако сортировка данных в Юникоде совместима с правилами сортировки определенной версии Windows.However, sorting Unicode data is compatible with a particular version of Windows sorting rules. Так как параметры сортировки SQL ServerSQL Server применяют для данных в Юникоде и других форматах разные правила сравнения, при сравнении одних и тех же данных получаются разные результаты, которые зависят от базового типа данных.Because SQL ServerSQL Server collations use different comparison rules for non-Unicode and Unicode data, you see different results for comparisons of the same data, depending on the underlying data type. Дополнительные сведения см. в статье Имя параметров сортировки SQL Server (Transact-SQL).For more information, see SQL Server Collation Name (Transact-SQL).

Во время установки SQL ServerSQL Server параметры сортировки по умолчанию определяются языковым стандартом операционной системы.During SQL ServerSQL Server setup, the default installation collation setting is determined by the operating system (OS) locale. Параметры сортировки уровня сервера можно изменить в процессе установки. Кроме того, их можно изменить, сменив языковой стандарт ОС перед установкой.You can change the server-level collation either during setup or by changing the OS locale before installation. В целях обратной совместимости для параметров сортировки по умолчанию устанавливается самая старая доступная версия, связанная с определенным языковым стандартом.For backward compatibility reasons, the default collation is set to the oldest available version that's associated with each specific locale. В связи с этим данные параметры сортировки рекомендуется использовать не во всех случаях.Therefore, this isn't always the recommended collation. Для использования всех возможностей SQL ServerSQL Server следует изменить параметры установки по умолчанию для параметров сортировки Windows.To take full advantage of SQL ServerSQL Server features, change the default installation settings to use Windows collations. Например, для языкового стандарта ОС "Английский (США)" (кодовая страница 1252) параметры сортировки по умолчанию во время установки — SQL_Latin1_General_CP1_CI_AS. Их можно изменить на ближайший аналог в Windows Latin1_General_100_CI_AS_SC.For example, for the OS locale "English (United States)" (code page 1252), the default collation during setup is SQL_Latin1_General_CP1_CI_AS, and it can be changed to its closest Windows collation counterpart, Latin1_General_100_CI_AS_SC.

Примечание

При обновлении англоязычной версии экземпляра SQL ServerSQL Server можно задать параметры сортировки SQL ServerSQL Server (SQL_*), чтобы обеспечить совместимость с существующими экземплярами SQL ServerSQL Server.When you upgrade an English-language instance of SQL ServerSQL Server, you can specify SQL ServerSQL Server collations (SQL_*) for compatibility with existing instances of SQL ServerSQL Server. Так как для экземпляра SQL ServerSQL Server параметры сортировки по умолчанию определяются во время установки, очень важно правильно настроить параметры сортировки в следующих случаях:Because the default collation for an instance of SQL ServerSQL Server is defined during setup, make sure that you specify the collation settings carefully when the following conditions are true:

  • Код приложения зависит от поведения предыдущих параметров сортировки SQL ServerSQL Server .Your application code depends on the behavior of previous SQL ServerSQL Server collations.
  • Необходимо хранить символьные данные, в которых используется несколько языков.You must store character data that reflects multiple languages.

Уровни параметров сортировкиCollation levels

Настройка параметров сортировки поддерживается на следующих уровнях экземпляра SQL ServerSQL Server.Setting collations are supported at the following levels of an instance of SQL ServerSQL Server:

Параметры сортировки уровня сервераServer-level collations

Параметры сортировки сервера по умолчанию определяются в процессе установки SQL ServerSQL Server и становятся параметрами сортировки по умолчанию для системных баз данных и всех пользовательских баз данных.The default server collation is determined during SQL ServerSQL Server setup, and it becomes the default collation of the system databases and all user databases.

В приведенной ниже таблице представлены параметры сортировки по умолчанию, определяемые языковым стандартом операционной системы (ОС), включая коды языков (LCID) в Windows и SQL.The following table shows the default collation designations, as determined by the operating system (OS) locale, including their Windows and SQL Language Code Identifiers (LCID):

Локаль WindowsWindows locale Код языка в WindowsWindows LCID Код языка SQLSQL LCID Параметры сортировки по умолчаниюDefault collation
Африкаанс (Южная Африка)Afrikaans (South Africa) 0x04360x0436 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Албанский (Албания)Albanian (Albania) 0x041c0x041c 0x041c0x041c Albanian_CI_ASAlbanian_CI_AS
Эльзасский (Франция)Alsatian (France) 0x04840x0484 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Амхарик (Эфиопия)Amharic (Ethiopia) 0x045e0x045e 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Арабский (Алжир)Arabic (Algeria) 0x14010x1401 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Бахрейн)Arabic (Bahrain) 0x3c010x3c01 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Египет)Arabic (Egypt) 0x0c010x0c01 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Ирак)Arabic (Iraq) 0x08010x0801 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Иордания)Arabic (Jordan) 0x2c010x2c01 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Кувейт)Arabic (Kuwait) 0x34010x3401 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Ливан)Arabic (Lebanon) 0x30010x3001 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Ливия)Arabic (Libya) 0x10010x1001 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Марокко)Arabic (Morocco) 0x18010x1801 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Оман)Arabic (Oman) 0x20010x2001 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Катар)Arabic (Qatar) 0x40010x4001 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Саудовская Аравия)Arabic (Saudi Arabia) 0x04010x0401 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Сирия)Arabic (Syria) 0x28010x2801 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Тунис)Arabic (Tunisia) 0x1c010x1c01 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (ОАЭ)Arabic (U.A.E.) 0x38010x3801 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Арабский (Йемен)Arabic (Yemen) 0x24010x2401 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Армянский (Армения)Armenian (Armenia) 0x042b0x042b 0x04190x0419 Latin1_General_CI_ASLatin1_General_CI_AS
Ассамский (Индия)Assamese (India) 0x044d0x044d 0x044d0x044d Недоступен на уровне сервераNot available at server level
Азербайджанский (Азербайджан, кириллица)Azerbaijani (Azerbaijan, Cyrillic) 0x082c0x082c 0x082c0x082c Является нерекомендуемым и недоступен на уровне сервераDeprecated, not available at server level
Азербайджанский (Азербайджан, латиница)Azerbaijani (Azerbaijan, Latin) 0x042c0x042c 0x042c0x042c Является нерекомендуемым и недоступен на уровне сервераDeprecated, not available at server level
Башкирский (Россия)Bashkir (Russia) 0x046d0x046d 0x046d0x046d Latin1_General_CI_AILatin1_General_CI_AI
БаскскийBasque (Basque) 0x042d0x042d 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Белорусский (Беларусь)Belarusian (Belarus) 0x04230x0423 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Бенгальский (Бангладеш)Bangla (Bangladesh) 0x08450x0845 0x04450x0445 Недоступен на уровне сервераNot available at server level
Bengali (India)Bengali (India) 0x04450x0445 0x04390x0439 Недоступен на уровне сервераNot available at server level
Боснийский (Босния и Герцеговина, кириллица)Bosnian (Bosnia and Herzegovina, Cyrillic) 0x201a0x201a 0x201a0x201a Latin1_General_CI_AILatin1_General_CI_AI
Боснийский (Босния и Герцеговина, латиница)Bosnian (Bosnia and Herzegovina, Latin) 0x141a0x141a 0x141a0x141a Latin1_General_CI_AILatin1_General_CI_AI
Бретонский (Франция)Breton (France) 0x047e0x047e 0x047e0x047e Latin1_General_CI_AILatin1_General_CI_AI
Болгарский (Болгария)Bulgarian (Bulgaria) 0x04020x0402 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Catalan (Catalan)Catalan (Catalan) 0x04030x0403 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Китайский (Гонконг, КНР)Chinese (Hong Kong SAR, PRC) 0x0c040x0c04 0x04040x0404 Chinese_Taiwan_Stroke_CI_ASChinese_Taiwan_Stroke_CI_AS
Chinese (Macao SAR)Chinese (Macao SAR) 0x14040x1404 0x14040x1404 Latin1_General_CI_AILatin1_General_CI_AI
Китайский (Макау)Chinese (Macau) 0x214040x21404 0x214040x21404 Latin1_General_CI_AILatin1_General_CI_AI
Китайский (КНР)Chinese (PRC) 0x08040x0804 0x08040x0804 Chinese_PRC_CI_ASChinese_PRC_CI_AS
Китайский (КНР)Chinese (PRC) 0x208040x20804 0x208040x20804 Chinese_PRC_Stroke_CI_ASChinese_PRC_Stroke_CI_AS
Chinese (Singapore)Chinese (Singapore) 0x10040x1004 0x08040x0804 Chinese_PRC_CI_ASChinese_PRC_CI_AS
Chinese (Singapore)Chinese (Singapore) 0x210040x21004 0x208040x20804 Chinese_PRC_Stroke_CI_ASChinese_PRC_Stroke_CI_AS
Китайский (Тайвань)Chinese (Taiwan) 0x304040x30404 0x304040x30404 Chinese_Taiwan_Bopomofo_CI_ASChinese_Taiwan_Bopomofo_CI_AS
Китайский (Тайвань)Chinese (Taiwan) 0x04040x0404 0x04040x0404 Chinese_Taiwan_Stroke_CI_ASChinese_Taiwan_Stroke_CI_AS
Корсиканский (Франция)Corsican (France) 0x04830x0483 0x04830x0483 Latin1_General_CI_AILatin1_General_CI_AI
Хорватский (Босния и Герцеговина, латиница)Croatian (Bosnia and Herzegovina, Latin) 0x101a0x101a 0x041a0x041a Croatian_CI_ASCroatian_CI_AS
Хорватский (Хорватия)Croatian (Croatia) 0x041a0x041a 0x041a0x041a Croatian_CI_ASCroatian_CI_AS
Чешский (Чешская Республика)Czech (Czech Republic) 0x04050x0405 0x04050x0405 Czech_CI_ASCzech_CI_AS
Датский (Дания)Danish (Denmark) 0x04060x0406 0x04060x0406 Danish_Norwegian_CI_ASDanish_Norwegian_CI_AS
Дари (Афганистан)Dari (Afghanistan) 0x048c0x048c 0x048c0x048c Latin1_General_CI_AILatin1_General_CI_AI
Мальдивский (Мальдивы)Divehi (Maldives) 0x04650x0465 0x04650x0465 Недоступен на уровне сервераNot available at server level
Нидерландский (Бельгия)Dutch (Belgium) 0x08130x0813 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Нидерландский (Нидерланды)Dutch (Netherlands) 0x04130x0413 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Австралия)English (Australia) 0x0c090x0c09 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Белиз)English (Belize) 0x28090x2809 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Канада)English (Canada) 0x10090x1009 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Карибский бассейн)English (Caribbean) 0x24090x2409 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Индия)English (India) 0x40090x4009 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Ирландия)English (Ireland) 0x18090x1809 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Ямайка)English (Jamaica) 0x20090x2009 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Малайзия)English (Malaysia) 0x44090x4409 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Новая Зеландия)English (New Zealand) 0x14090x1409 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Филиппины)English (Philippines) 0x34090x3409 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Сингапур)English (Singapore) 0x48090x4809 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Южная Африка)English (South Africa) 0x1c090x1c09 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Тринидад и Тобаго)English (Trinidad and Tobago) 0x2c090x2c09 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (Великобритания)English (United Kingdom) 0x08090x0809 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Английский (США)English (United States) 0x04090x0409 0x04090x0409 SQL_Latin1_General_CP1_CI_ASSQL_Latin1_General_CP1_CI_AS
Английский (Зимбабве)English (Zimbabwe) 0x30090x3009 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Эстонский (Эстония)Estonian (Estonia) 0x04250x0425 0x04250x0425 Estonian_CI_ASEstonian_CI_AS
Фарерский (Фарерские острова)Faroese (Faroe Islands) 0x04380x0438 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Филиппинский (Филиппины)Filipino (Philippines) 0x04640x0464 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Финский (Финляндия)Finnish (Finland) 0x040b0x040b 0x040b0x040b Finnish_Swedish_CI_ASFinnish_Swedish_CI_AS
Французский (Бельгия)French (Belgium) 0x080c0x080c 0x040c0x040c French_CI_ASFrench_CI_AS
Французский (Канада)French (Canada) 0x0c0c0x0c0c 0x040c0x040c French_CI_ASFrench_CI_AS
Французский (Франция)French (France) 0x040c0x040c 0x040c0x040c French_CI_ASFrench_CI_AS
Французский (Люксембург)French (Luxembourg) 0x140c0x140c 0x040c0x040c French_CI_ASFrench_CI_AS
Французский (Монако)French (Monaco) 0x180c0x180c 0x040c0x040c French_CI_ASFrench_CI_AS
Французский (Швейцария)French (Switzerland) 0x100c0x100c 0x040c0x040c French_CI_ASFrench_CI_AS
Фризский (Нидерланды)Frisian (Netherlands) 0x04620x0462 0x04620x0462 Latin1_General_CI_AILatin1_General_CI_AI
ГалисийскийGalician 0x04560x0456 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Грузинский (Грузия)Georgian (Georgia) 0x104370x10437 0x104370x10437 Georgian_Modern_Sort_CI_ASGeorgian_Modern_Sort_CI_AS
Грузинский (Грузия)Georgian (Georgia) 0x04370x0437 0x04190x0419 Latin1_General_CI_ASLatin1_General_CI_AS
Немецкий (сортировка телефонной книги)German - Phone Book Sort (DIN) 0x104070x10407 0x104070x10407 German_PhoneBook_CI_ASGerman_PhoneBook_CI_AS
Немецкий (Австрия)German (Austria) 0x0c070x0c07 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Немецкий (Германия)German (Germany) 0x04070x0407 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Немецкий (Лихтенштейн)German (Liechtenstein) 0x14070x1407 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Немецкий (Люксембург)German (Luxembourg) 0x10070x1007 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Немецкий (Швейцария)German (Switzerland) 0x08070x0807 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Греческий (Греция)Greek (Greece) 0x04080x0408 0x04080x0408 Greek_CI_ASGreek_CI_AS
Гренландский (Гренландия)Greenlandic (Greenland) 0x046f0x046f 0x04060x0406 Danish_Norwegian_CI_ASDanish_Norwegian_CI_AS
Гуджарати (Индия)Gujarati (India) 0x04470x0447 0x04390x0439 Недоступен на уровне сервераNot available at server level
Хауса (Нигерия, латиница)Hausa (Nigeria, Latin) 0x04680x0468 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Иврит (Израиль)Hebrew (Israel) 0x040d0x040d 0x040d0x040d Hebrew_CI_ASHebrew_CI_AS
Хинди (Индия)Hindi (India) 0x04390x0439 0x04390x0439 Недоступен на уровне сервераNot available at server level
Венгерский (Венгрия)Hungarian (Hungary) 0x040e0x040e 0x040e0x040e Hungarian_CI_ASHungarian_CI_AS
Венгерский (техническая сортировка)Hungarian Technical Sort 0x1040e0x1040e 0x1040e0x1040e Hungarian_Technical_CI_ASHungarian_Technical_CI_AS
Исландский (Исландия)Icelandic (Iceland) 0x040f0x040f 0x040f0x040f Icelandic_CI_ASIcelandic_CI_AS
Игбо (Нигерия)Igbo (Nigeria) 0x04700x0470 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Индонезийский (Индонезия)Indonesian (Indonesia) 0x04210x0421 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Инуитский (Канада, латиница)Inuktitut (Canada, Latin) 0x085d0x085d 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Инуитский (Канада)Inuktitut (Syllabics) Canada 0x045d0x045d 0x045d0x045d Latin1_General_CI_AILatin1_General_CI_AI
Ирландский (Ирландия)Irish (Ireland) 0x083c0x083c 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Итальянский (Италия)Italian (Italy) 0x04100x0410 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Итальянский (Швейцария)Italian (Switzerland) 0x08100x0810 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Японский (Япония)Japanese (Japan XJIS) 0x04110x0411 0x04110x0411 Japanese_CI_ASJapanese_CI_AS
Японский (Япония)Japanese (Japan) 0x0404110x040411 0x404110x40411 Latin1_General_CI_AILatin1_General_CI_AI
Каннада (Индия)Kannada (India) 0x044b0x044b 0x04390x0439 Недоступен на уровне сервераNot available at server level
Казахский (Казахстан)Kazakh (Kazakhstan) 0x043f0x043f 0x043f0x043f Kazakh_90_CI_ASKazakh_90_CI_AS
Кхмерский (Камбоджа)Khmer (Cambodia) 0x04530x0453 0x04530x0453 Недоступен на уровне сервераNot available at server level
Киче (Гватемала)K'iche (Guatemala) 0x04860x0486 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Киньяруанда (Руанда)Kinyarwanda (Rwanda) 0x04870x0487 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Конкани (Индия)Konkani (India) 0x04570x0457 0x04390x0439 Недоступен на уровне сервераNot available at server level
Корейский (Корея, словарная сортировка)Korean (Korea Dictionary Sort) 0x04120x0412 0x04120x0412 Korean_Wansung_CI_ASKorean_Wansung_CI_AS
Киргизский (Киргизия)Kyrgyz (Kyrgyzstan) 0x04400x0440 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Лаосский (Лаосская Народно-Демократическая Республика)Lao (Lao PDR) 0x04540x0454 0x04540x0454 Недоступен на уровне сервераNot available at server level
Латышский (Латвия)Latvian (Latvia) 0x04260x0426 0x04260x0426 Latvian_CI_ASLatvian_CI_AS
Литовский (Литва)Lithuanian (Lithuania) 0x04270x0427 0x04270x0427 Lithuanian_CI_ASLithuanian_CI_AS
Нижний Сорбский (Германия)Lower Sorbian (Germany) 0x082e0x082e 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Люксембургский (Люксембург)Luxembourgish (Luxembourg) 0x046e0x046e 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Северная МакедонияMacedonian (North Macedonia, FYROM) 0x042f0x042f 0x042f0x042f Macedonian_FYROM_90_CI_ASMacedonian_FYROM_90_CI_AS
Малайский (Бруней-Даруссалам)Malay (Brunei Darussalam) 0x083e0x083e 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Малайский (Малайзия)Malay (Malaysia) 0x043e0x043e 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Малайялам (Индия)Malayalam (India) 0x044c0x044c 0x04390x0439 Недоступен на уровне сервераNot available at server level
Мальтийский (Мальта)Maltese (Malta) 0x043a0x043a 0x043a0x043a Latin1_General_CI_AILatin1_General_CI_AI
Маорийский (Новая Зеландия)Maori (New Zealand) 0x04810x0481 0x04810x0481 Latin1_General_CI_AILatin1_General_CI_AI
Мапудунгун (Чили)Mapudungun (Chile) 0x047a0x047a 0x047a0x047a Latin1_General_CI_AILatin1_General_CI_AI
Маратхи (Индия)Marathi (India) 0x044e0x044e 0x04390x0439 Недоступен на уровне сервераNot available at server level
Могавк (Канада)Mohawk (Canada) 0x047c0x047c 0x047c0x047c Latin1_General_CI_AILatin1_General_CI_AI
Монгольский (Монголия)Mongolian (Mongolia) 0x04500x0450 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Монгольский (КНР)Mongolian (PRC) 0x08500x0850 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Непальский (Непал)Nepali (Nepal) 0x04610x0461 0x04610x0461 Недоступен на уровне сервераNot available at server level
Норвежский (букмол, Норвегия)Norwegian (Bokmål, Norway) 0x04140x0414 0x04140x0414 Latin1_General_CI_AILatin1_General_CI_AI
Норвежский (нюнорск/ландсмол, Норвегия)Norwegian (Nynorsk, Norway) 0x08140x0814 0x04140x0414 Latin1_General_CI_AILatin1_General_CI_AI
Окситанский (Франция)Occitan (France) 0x04820x0482 0x040c0x040c French_CI_ASFrench_CI_AS
Ория (Индия)Odia (India) 0x04480x0448 0x04390x0439 Недоступен на уровне сервераNot available at server level
Пушту (Афганистан)Pashto (Afghanistan) 0x04630x0463 0x04630x0463 Недоступен на уровне сервераNot available at server level
Персидский (Иран)Persian (Iran) 0x04290x0429 0x04290x0429 Latin1_General_CI_AILatin1_General_CI_AI
Польский (Польша)Polish (Poland) 0x04150x0415 0x04150x0415 Polish_CI_ASPolish_CI_AS
Португальский (Бразилия)Portuguese (Brazil) 0x04160x0416 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Португальский (Португалия)Portuguese (Portugal) 0x08160x0816 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Панджабский (Индия)Punjabi (India) 0x04460x0446 0x04390x0439 Недоступен на уровне сервераNot available at server level
Кечуа (Боливия)Quechua (Bolivia) 0x046b0x046b 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Кечуа (Эквадор)Quechua (Ecuador) 0x086b0x086b 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Кечуа (Перу)Quechua (Peru) 0x0c6b0x0c6b 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Румынский (Румыния)Romanian (Romania) 0x04180x0418 0x04180x0418 Romanian_CI_ASRomanian_CI_AS
Романш (Швейцария)Romansh (Switzerland) 0x04170x0417 0x04170x0417 Latin1_General_CI_AILatin1_General_CI_AI
Русский (Россия)Russian (Russia) 0x04190x0419 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Саха (Россия)Sahka (Russia) 0x04850x0485 0x04850x0485 Latin1_General_CI_AILatin1_General_CI_AI
Саамский (Инари, Финляндия)Sami (Inari, Finland) 0x243b0x243b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Саамский (Луле, Норвегия)Sami (Lule, Norway) 0x103b0x103b 0x043b0x043b Latin1_General_CI_AILatin1_General_CI_AI
Саамский (Луле, Швеция)Sami (Lule, Sweden) 0x143b0x143b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Саамский (Северный, Финляндия)Sami (Northern, Finland) 0x0c3b0x0c3b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Саамский (Северный, Норвегия)Sami (Northern, Norway) 0x043b0x043b 0x043b0x043b Latin1_General_CI_AILatin1_General_CI_AI
Саамский (Северный, Швеция)Sami (Northern, Sweden) 0x083b0x083b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Саамский (Скольт, Финляндия)Sami (Skolt, Finland) 0x203b0x203b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Саамский (Южный, Норвегия)Sami (Southern, Norway) 0x183b0x183b 0x043b0x043b Latin1_General_CI_AILatin1_General_CI_AI
Саамский (Южный, Швеция)Sami (Southern, Sweden) 0x1c3b0x1c3b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Санскрит (Индия)Sanskrit (India) 0x044f0x044f 0x04390x0439 Недоступен на уровне сервераNot available at server level
Сербский (Босния и Герцеговина, кириллица)Serbian (Bosnia and Herzegovina, Cyrillic) 0x1c1a0x1c1a 0x0c1a0x0c1a Latin1_General_CI_AILatin1_General_CI_AI
Сербский (Босния и Герцеговина, латиница)Serbian (Bosnia and Herzegovina, Latin) 0x181a0x181a 0x081a0x081a Latin1_General_CI_AILatin1_General_CI_AI
Сербский (Сербия, кириллица)Serbian (Serbia, Cyrillic) 0x0c1a0x0c1a 0x0c1a0x0c1a Latin1_General_CI_AILatin1_General_CI_AI
Сербский (Сербия, латиница)Serbian (Serbia, Latin) 0x081a0x081a 0x081a0x081a Latin1_General_CI_AILatin1_General_CI_AI
Сесуто са Лебоа/Северный Суто (Южная Африка)Sesotho sa Leboa/Northern Sotho (South Africa) 0x046c0x046c 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Сетсвана/Тсвана (Южная Африка)Setswana/Tswana (South Africa) 0x04320x0432 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Синхала (Шри-Ланка)Sinhala (Sri Lanka) 0x045b0x045b 0x04390x0439 Недоступен на уровне сервераNot available at server level
Словацкий (Словакия)Slovak (Slovakia) 0x041b0x041b 0x041b0x041b Slovak_CI_ASSlovak_CI_AS
Словенский (Словения)Slovenian (Slovenia) 0x04240x0424 0x04240x0424 Slovenian_CI_ASSlovenian_CI_AS
Испанский (Аргентина)Spanish (Argentina) 0x2c0a0x2c0a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Боливия)Spanish (Bolivia) 0x400a0x400a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Чили)Spanish (Chile) 0x340a0x340a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Колумбия)Spanish (Colombia) 0x240a0x240a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Коста-Рика)Spanish (Costa Rica) 0x140a0x140a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Доминиканская Республика)Spanish (Dominican Republic) 0x1c0a0x1c0a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Эквадор)Spanish (Ecuador) 0x300a0x300a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Эль-Сальвадор)Spanish (El Salvador) 0x440a0x440a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Гватемала)Spanish (Guatemala) 0x100a0x100a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Гондурас)Spanish (Honduras) 0x480a0x480a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Мексика)Spanish (Mexico) 0x080a0x080a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Никарагуа)Spanish (Nicaragua) 0x4c0a0x4c0a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Панама)Spanish (Panama) 0x180a0x180a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Парагвай)Spanish (Paraguay) 0x3c0a0x3c0a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Перу)Spanish (Peru) 0x280a0x280a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Пуэрто-Рико)Spanish (Puerto Rico) 0x500a0x500a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
испанский (Испания)Spanish (Spain) 0x0c0a0x0c0a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Испания, традиционная сортировка)Spanish (Spain, Traditional Sort) 0x040a0x040a 0x040a0x040a Traditional_Spanish_CI_ASTraditional_Spanish_CI_AS
Испанский (США)Spanish (United States) 0x540a0x540a 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Испанский (Уругвай)Spanish (Uruguay) 0x380a0x380a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Испанский (Венесуэла)Spanish (Venezuela) 0x200a0x200a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Суахили (Кения)Swahili (Kenya) 0x04410x0441 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Шведский (Финляндия)Swedish (Finland) 0x081d0x081d 0x040b0x040b Finnish_Swedish_CI_ASFinnish_Swedish_CI_AS
Шведский (Швеция)Swedish (Sweden) 0x041d0x041d 0x040b0x040b Finnish_Swedish_CI_ASFinnish_Swedish_CI_AS
Сирийский (Сирия)Syriac (Syria) 0x045a0x045a 0x045a0x045a Недоступен на уровне сервераNot available at server level
Таджикский (Таджикистан)Tajik (Tajikistan) 0x04280x0428 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Тамазихт (Алжир, латиница)Tamazight (Algeria, Latin) 0x085f0x085f 0x085f0x085f Latin1_General_CI_AILatin1_General_CI_AI
Тамильский (Индия)Tamil (India) 0x04490x0449 0x04390x0439 Недоступен на уровне сервераNot available at server level
Татарский (Россия)Tatar (Russia) 0x04440x0444 0x04440x0444 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Телугу (Индия)Telugu (India) 0x044a0x044a 0x04390x0439 Недоступен на уровне сервераNot available at server level
Тайский (Таиланд)Thai (Thailand) 0x041e0x041e 0x041e0x041e Thai_CI_ASThai_CI_AS
Тибетский (КНР)Tibetan (PRC) 0x04510x0451 0x04510x0451 Недоступен на уровне сервераNot available at server level
Турецкий (Турция)Turkish (Turkey) 0x041f0x041f 0x041f0x041f Turkish_CI_ASTurkish_CI_AS
Туркменский (Туркменистан)Turkmen (Turkmenistan) 0x04420x0442 0x04420x0442 Latin1_General_CI_AILatin1_General_CI_AI
Уйгурский (КНР)Uighur (PRC) 0x04800x0480 0x04800x0480 Latin1_General_CI_AILatin1_General_CI_AI
Украинский (Украина)Ukrainian (Ukraine) 0x04220x0422 0x04220x0422 Ukrainian_CI_ASUkrainian_CI_AS
Верхний Сорбский (Германия)Upper Sorbian (Germany) 0x042e0x042e 0x042e0x042e Latin1_General_CI_AILatin1_General_CI_AI
Урду (Пакистан)Urdu (Pakistan) 0x04200x0420 0x04200x0420 Latin1_General_CI_AILatin1_General_CI_AI
Узбекский (Узбекистан, кириллица)Uzbek (Uzbekistan, Cyrillic) 0x08430x0843 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Узбекский (Узбекистан, латиница)Uzbek (Uzbekistan, Latin) 0x04430x0443 0x04430x0443 Uzbek_Latin_90_CI_ASUzbek_Latin_90_CI_AS
Вьетнамский (Вьетнам)Vietnamese (Vietnam) 0x042a0x042a 0x042a0x042a Vietnamese_CI_ASVietnamese_CI_AS
Валлийский (Великобритания)Welsh (United Kingdom) 0x04520x0452 0x04520x0452 Latin1_General_CI_AILatin1_General_CI_AI
Волоф (Сенегал)Wolof (Senegal) 0x04880x0488 0x040c0x040c French_CI_ASFrench_CI_AS
Коса/исиКоса (Южная Африка)Xhosa/isiXhosa (South Africa) 0x04340x0434 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Носу (КНР)Yi (PRC) 0x04780x0478 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Йоруба (Нигерия)Yoruba (Nigeria) 0x046a0x046a 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Зулу/исиЗулу (Южная Африка)Zulu/isiZulu (South Africa) 0x04350x0435 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS

После назначения параметров сортировки серверу изменить их можно только путем экспорта всех данных и объектов базы данных, перестроения базы данных master и последующего импорта всех объектов и данных базы данных.After you've assigned a collation to the server, you can change it only by exporting all database objects and data, rebuilding the master database, and importing all database objects and data. Вместо изменения параметров сортировки по умолчанию для экземпляра SQL ServerSQL Serverможно задать желаемые параметры сортировки при создании новой базы данных или столбца базы данных.Instead of changing the default collation of an instance of SQL ServerSQL Server, you can specify the desired collation when you create a new database or database column.

Запрос параметров сортировки сервера для экземпляра SQL ServerSQL Server выполняется с помощью функции SERVERPROPERTY.To query the server collation for an instance of SQL ServerSQL Server, use the SERVERPROPERTY function:

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

Запрос всех доступных на сервере параметров сортировки выполняется с помощью следующей встроенной функции fn_helpcollations():To query the server for all available collations, use the following fn_helpcollations() built-in function:

SELECT * FROM sys.fn_helpcollations();

Параметры сортировки уровня базы данныхDatabase-level collations

При создании или изменении базы данных можно задать ее параметры сортировки по умолчанию с помощью предложения COLLATE в инструкции CREATE DATABASE или ALTER DATABASE.When you create or modify a database, you can use the COLLATE clause of the CREATE DATABASE or ALTER DATABASE statement to specify the default database collation. Если параметры сортировки не указаны, базе данных назначаются параметры сортировки сервера.If no collation is specified, the database is assigned the server collation.

Изменить параметры сортировки системных баз данных можно только путем изменения параметров сортировки сервера.You can't change the collation of system databases unless you change the collation for the server.

Параметры сортировки базы данных используются для всех метаданных в базе данных, а также по умолчанию для всех строковых столбцов, временных объектов, имен переменных и любых других строковых объектов в базе данных.The database collation is used for all metadata in the database, and the collation is the default for all string columns, temporary objects, variable names, and any other strings used in the database. Когда вы изменяете сортировку базы данных пользователя, могут возникнуть конфликты сортировки, кода запросы в базе данных получают доступ к временным таблицам.When you change the collation of a user database, there can be collation conflicts when queries in the database access temporary tables. Временные таблицы всегда хранятся в системной базе данных tempdb, которая использует параметры сортировки экземпляра.Temporary tables are always stored in the tempdb system database, which uses the collation for the instance. Запросы, сравнивающие символьные данные в пользовательской базе данных и tempdb, могут завершиться ошибкой, если параметры сортировки вызовут конфликт при оценке таких данных.Queries that compare character data between the user database and tempdb might fail if the collations cause a conflict in evaluating the character data. Эту проблему можно решить, указав в запросе предложение COLLATE.You can resolve this issue by specifying the COLLATE clause in the query. Дополнительные сведения см. в статье COLLATE (Transact-SQL).For more information, see COLLATE (Transact-SQL).

Примечание

После создания базы данных в База данных SQL AzureAzure SQL Database параметры сортировки изменить невозможно.You can't change the collation after the database has been created on База данных SQL AzureAzure SQL Database.

Параметры сортировки пользовательской базы данных можно изменить с помощью инструкции ALTER DATABASE следующим образом:You can change the collation of a user database by using an ALTER DATABASE statement that's similar to the following:

ALTER DATABASE myDB COLLATE Greek_CS_AI;

Важно!

Изменение параметров сортировки на уровне базы данных не влияет на параметры сортировки на уровне столбца или выражения.Altering the database-level collation doesn't affect column-level or expression-level collations.

Текущие параметры сортировки базы данных можно получить с помощью следующей инструкции:You can retrieve the current collation of a database by using a statement that's similar to the following:

SELECT CONVERT (VARCHAR(50), DATABASEPROPERTYEX('database_name','collation'));

Параметры сортировки уровня столбцовColumn-level collations

При создании или изменении таблицы параметры сортировки для каждого символьного или строкового столбца можно указать с помощью предложения COLLATE.When you create or alter a table, you can specify collations for each character-string column by using the COLLATE clause. Если не указывать параметры сортировки, столбцу присваиваются параметры сортировки по умолчанию для базы данных.If you don't specify a collation, the column is assigned the default collation of the database.

Параметры сортировки столбца можно изменить с помощью инструкции ALTER TABLE следующим образом:You can change the collation of a column by using an ALTER TABLE statement that's similar to the following:

ALTER TABLE myTable ALTER COLUMN mycol NVARCHAR(10) COLLATE Greek_CS_AI;

Параметры сортировки уровня выраженийExpression-level collations

Параметры сортировки уровня выражения задаются при выполнении инструкции, и они влияют на способ возврата результирующего набора.Expression-level collations are set when a statement is run, and they affect the way a result set is returned. Это позволяет определить результаты сортировки предложения ORDER BY в соответствии с конкретным языковым стандартом.This enables ORDER BY sort results to be locale-specific. Для реализации параметров сортировки уровня выражения предложение COLLATE применяется указанным ниже образом.To implement expression-level collations, use a COLLATE clause such as the following:

SELECT name FROM customer ORDER BY name COLLATE Latin1_General_CS_AI;    

ЛокальLocale

Языковой стандарт представляет собой набор сведений, связанных с местоположением или с языком и региональными параметрами.A locale is a set of information that's associated with a location or a culture. В него может входить имя и идентификатор языка, его система письма, а также национальные стандарты.The information can include the name and identifier of the spoken language, the script that's used to write the language, and cultural conventions. Параметры сортировки могут быть ассоциированы с одним или несколькими локалями.Collations can be associated with one or more locales. Дополнительные сведения см. в разделе Номера локалей, назначаемые Microsoft.For more information, see Locale IDs Assigned by Microsoft.

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

Кодовая страница — это упорядоченный набор символов данного скрипта, в котором числовой индекс или значение кодовой точки связано с каждым символом.A code page is an ordered set of characters of a given script in which a numeric index, or code point value, is associated with each character. Кодовую страницу Windows обычно называют набором символов или кодировкой.A Windows code page is typically referred to as a character set or a charset. Кодовые страницы обеспечивают поддержку кодировок и раскладок клавиатуры, применяемых в различных локалях системы Windows.Code pages are used to provide support for the character sets and keyboard layouts that are used by different Windows system locales.

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

Порядок сортировки устанавливает способ сортировки значений данных.Sort order specifies how data values are sorted. Он влияет на результаты сравнения данных.The order affects the results of data comparison. Данные сортируются с помощью параметров сортировки, и ее можно оптимизировать с помощью индексов.Data is sorted by using collations, and it can be optimized by using indexes.

Поддержка ЮникодаUnicode support

Юникод — это стандартный способ сопоставления кодовой точки символам.Unicode is a standard for mapping code points to characters. Так как он разработан для поддержки всех символов всех языков, различные кодовые страницы для поддержки разных наборов символов больше не требуются.Because it's designed to cover all the characters of all the languages of the world, you don't need different code pages to handle different sets of characters.

Основы ЮникодаUnicode basics

При хранении данных на нескольких языках в одной базе данных возникают неизбежные трудности в управлении, если используются только символьные данные и кодовые страницы.Storing data in multiple languages within one database is difficult to manage when you use only character data and code pages. Трудно найти одну кодовую страницу для базы данных, которая позволяла бы хранить данные на всех необходимых языках.It's also difficult to find one code page for the database that can store all the required language-specific characters. Кроме того, сложно гарантировать правильное преобразование специальных символов при их чтении или обновлении клиентами, использующими разные кодовые страницы.Additionally, it's difficult to guarantee the correct translation of special characters when they're being read or updated by a variety of clients that are running various code pages. Базы данных, поддерживающие интернациональные клиентские программы, всегда должны вместо обычных использовать типы данных Юникода.Databases that support international clients should always use Unicode data types instead of non-Unicode data types.

Например, рассмотрим базу данных заказчиков в Северной Америке, в которой будут храниться данные на трех основных языках:For example, consider a database of customers in North America that must handle three major languages:

  • испанские имена и адреса для Мексики;Spanish names and addresses for Mexico
  • французские имена и адреса для Квебека;French names and addresses for Quebec
  • английские имена и адреса для остальной части Канады и Соединенных Штатов.English names and addresses for the rest of Canada and the United States

При использовании только символьных столбцов и кодовых страниц необходимо убедиться в том, что при установке базы данных была установлена кодовая страница, поддерживающая все три языка.When you use only character columns and code pages, you must take care to ensure that the database is installed with a code page that will handle the characters of all three languages. Кроме того, необходимо гарантировать правильное преобразование символов любого языка клиентами, использующими кодовую страницу для другого языка.You must also take care to guarantee the correct translation of characters from any of the languages when the characters are read by clients that are running a code page for another language.

Примечание

Кодовая страница, используемая клиентом, определяется параметрами операционной системы (ОС).The code pages that a client uses are determined by the operating system (OS) settings. Чтобы установить кодовую страницу клиента в операционной системе Windows, используйте раздел Язык и региональные стандарты на панели управления.To set client code pages on the Windows operating system, use Regional Settings in Control Panel.

Выбрать кодовую страницу для символьных типов данных, поддерживающую все символы, которые требуются клиентам в различных точках земного шара, непросто.It would be difficult to select a code page for character data types that will support all the characters that are required by a worldwide audience. Самый простой способ управлять символьными данными в международных базах данных — всегда использовать тип данных, поддерживающий Юникод.The easiest way to manage character data in international databases is to always use a data type that supports Unicode.

Типы данных в ЮникодеUnicode data types

Для хранения символьных данных на нескольких языках в SQL ServerSQL Server (SQL Server 2005 (9.x)SQL Server 2005 (9.x) и выше) используйте типы данных в Юникоде (nchar, nvarchar и ntext). Не используйте другие типы данных (char, varchar и text).If you store character data that reflects multiple languages in SQL ServerSQL Server (SQL Server 2005 (9.x)SQL Server 2005 (9.x) and later), use Unicode data types (nchar, nvarchar, and ntext) instead of non-Unicode data types (char, varchar, and text).

Примечание

Для типов данных в Юникоде Компонент Database EngineDatabase Engine может представить до 65 535 символов с помощью UCS-2 или полный диапазон Юникода (1 114 111 символов), если используются дополнительные символы.For Unicode data types, the Компонент Database EngineDatabase Engine can represent up to 65,535 characters using UCS-2, or the full Unicode range (‭1,114,111‬ characters) if supplementary characters are used. Дополнительные сведения о включении дополнительных символов см. в разделе Дополнительные символы.For more information about enabling supplementary characters, see Supplementary Characters.

Кроме того, начиная с SQL Server 2019 (15.x)SQL Server 2019 (15.x), если используется сортировка UTF-8 (_UTF8), то предыдущие типы данных, отличные от Юникода (char и varchar), становятся типами данных Юникода, использующими кодировку UTF-8.Alternatively, starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x), if a UTF-8 enabled collation (_UTF8) is used, previously non-Unicode data types (char and varchar) become Unicode data types using UTF-8 encoding. В SQL Server 2019 (15.x)SQL Server 2019 (15.x) не изменяется поведение ранее существовавших типов данных (nchar, nvarchar и ntext), которые продолжают использовать кодировку UCS-2 или UTF-16.SQL Server 2019 (15.x)SQL Server 2019 (15.x) doesn't change the behavior of previously existing Unicode data types (nchar, nvarchar, and ntext), which continue to use UCS-2 or UTF-16 encoding. Дополнительные сведения см. в разделе Различия в хранении UTF-8 и UTF-16.For more information, see Storage differences between UTF-8 and UTF-16.

Замечания о ЮникодеUnicode considerations

Типы данных, отличные от Юникода, имеют значительные ограничения.Significant limitations are associated with non-Unicode data types. Это происходит по той причине, что на компьютере, где не применяется Юникод, можно использовать только одну кодовую страницу.This is because a non-Unicode computer is limited to using a single code page. Применение Юникода позволяет повысить производительность, так как требуется выполнять меньше преобразований кодовых страниц.You might experience performance gain by using Unicode, because it requires fewer code-page conversions. Параметры сортировки в Юникоде следует выбирать отдельно на уровне базы данных, столбца или выражения, так как они не поддерживаются на уровне сервера.Unicode collations must be selected individually at the database, column, or expression level because they aren't supported at the server level.

При переносе данных из сервера на клиент старые клиентские драйверы могут не распознать параметры сортировки сервера.When you move data from a server to a client, your server collation might not be recognized by older client drivers. Это может произойти при передаче данных с сервера с поддержкой Юникода на клиент без поддержки Юникода.This can occur when you move data from a Unicode server to a non-Unicode client. Лучшим вариантом может быть обновление операционной системы клиента, чтобы обновить параметры сортировки базовой системы.Your best option might be to upgrade the client operating system so that the underlying system collations are updated. Если на клиенте установлена клиентская программа базы данных, можно попробовать применить обновление службы к клиентской программе базы данных.If the client has database client software installed, you might consider applying a service update to the database client software.

Совет

Можно также попробовать использовать другие параметры сортировки для данных на сервере.You can also try to use a different collation for the data on the server. Выберите параметры сортировки, соответствующие кодовой странице в клиенте.Choose a collation that maps to a code page on the client.

Чтобы воспользоваться доступными в SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) и выше) параметрами сортировки UTF-16 для оптимизации поиска и сортировки некоторых символов Юникода (только параметры сортировки Windows), можно выбрать один из наборов параметров сортировки с поддержкой дополнительных символов (_SC) или один из наборов параметров сортировки версии 140.To use the UTF-16 collations that are available in SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later) to improve searching and sorting of some Unicode characters (Windows collations only), you can select either one of the supplementary characters (_SC) collations or one of the version 140 collations.

Чтобы воспользоваться доступными в SQL Server 2019 (15.x)SQL Server 2019 (15.x) параметрами сортировки UTF-8 для оптимизации поиска и сортировки некоторых символов Юникода (только параметры сортировки Windows), необходимо выбрать параметры сортировки с поддержкой кодировки UTF-8 (_UTF8).To use the UTF-8 collations that are available in SQL Server 2019 (15.x)SQL Server 2019 (15.x), and to improve searching and sorting of some Unicode characters (Windows collations only), you must select UTF-8 encoding-enabled collations(_UTF8).

  • Флаг UTF8 может применяться к следующим параметрам сортировки:The UTF8 flag can be applied to:

    • Лингвистические параметры сортировки, которые уже поддерживают дополнительные символы (_SC), или с учетом знаков выбора варианта (_VSS).Linguistic collations that already support supplementary characters (_SC) or variation-selector-sensitive (_VSS) awareness
    • Параметры двоичной сортировки BIN21BIN21 binary collation
  • Флаг UTF8 не может применяться к следующим параметрам сортировки:The UTF8 flag can't be applied to:

    • Лингвистические параметры сортировки, которые не поддерживают дополнительные символы (_SC), или с учетом знаков выбора варианта (_VSS).Linguistic collations that don't support supplementary characters (_SC) or variation-selector-sensitive (_VSS) awareness
    • Параметры двоичной сортировки BIN и BIN22The BIN or BIN22 binary collations
    • Параметры сортировки SQL_*The SQL_* collations

1 Начиная с SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.3.1 Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.3. SQL Server 2019 (15.x)SQL Server 2019 (15.x) В CTP 3.0 параметры сортировки UTF8_BIN2 заменены на Latin1_General_100_BIN2_UTF8.CTP 3.0 replaced collation UTF8_BIN2 with Latin1_General_100_BIN2_UTF8.
2 Начиная с SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.3.2 Up to with SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.3.

Чтобы получить представление о трудностях, связанных с применением типов данных в Юникоде или не в Юникоде, протестируйте свой сценарий, измерив разницу производительности для этих двух вариантов в вашей среде.To evaluate issues that are related to using Unicode or non-Unicode data types, test your scenario to measure performance differences in your environment. Рекомендуется стандартизировать системные параметры сортировки, которые используются в организации, а там, где это возможно, — развертывать серверы и клиенты с поддержкой Юникода.It's a good practice to standardize the collation that's used on systems across your organization, and to deploy Unicode servers and clients wherever possible.

Во многих случаях SQL ServerSQL Server взаимодействует с другими серверами или клиентами, поэтому в организации может использоваться несколько стандартов доступа к данным для приложений и экземпляров серверов.In many situations, SQL ServerSQL Server interacts with other servers or clients, and your organization might use multiple data-access standards between applications and server instances. КлиентыSQL ServerSQL Server могут быть двух видов:SQL ServerSQL Server clients are one of two main types:

  • клиенты с поддержкой Юникода, применяющие OLE DB и ODBC версии 3.7 или более поздних;Unicode clients that use OLE DB and Open Database Connectivity (ODBC) version 3.7 or later.
  • клиенты без поддержки Юникода, применяющие DB-Library и ODBC версий 3.6 или более ранних.Non-Unicode clients that use DB-Library and ODBC version 3.6 or earlier.

В таблице ниже приведены сведения об использовании данных на нескольких языках с различными сочетаниями серверов, поддерживающих и не поддерживающих Юникод.The following table provides information about using multilingual data with various combinations of Unicode and non-Unicode servers:

СерверServer клиентClient Преимущества или ограниченияBenefits or limitations
ЮникодUnicode ЮникодUnicode Так как данные в Юникоде широко используются в системе, этот сценарий обеспечивает наилучшую производительность и защиту полученных данных от повреждения.Because Unicode data is used throughout the system, this scenario provides the best performance and protection from corruption of retrieved data. Это случай применения объектов данных ActiveX (ADO), OLE DB, а также ODBC версии 3.7 или более поздней.This is the situation with ActiveX Data Objects (ADO), OLE DB, and ODBC version 3.7 or later.
ЮникодUnicode Не ЮникодNon-Unicode В этом случае при перемещении данных на клиентский компьютер возможны ограничения или ошибки, особенно если сервер под управлением новой операционной системы соединяется с клиентом старой версии SQL ServerSQL Server или под управлением старой операционной системы.In this scenario, especially with connections between a server that's running a newer operating system and a client that's running an earlier version of SQL ServerSQL Server, or on an older operating system, there can be limitations or errors when you move data to a client computer. Предпринимается попытка преобразовать находящиеся на сервере данные в Юникоде с помощью соответствующей кодовой страницы в клиенте, кодировка которого отлична от Юникода.Unicode data on the server tries to map to a corresponding code page on the non-Unicode client to convert the data.
Не ЮникодNon-Unicode ЮникодUnicode Это не лучшая конфигурация для работы с данными на нескольких языках.This isn't an ideal configuration for using multilingual data. Невозможно записать данные в Юникоде на сервер, работающий не в Юникоде.You can't write Unicode data to the non-Unicode server. Вероятнее всего, неполадки могут произойти при отправке данных на серверы, которые поддерживают другие кодовые страницы.Problems are likely to occur when data is sent to servers that are outside the server's code page.
Не ЮникодNon-Unicode Не ЮникодNon-Unicode В этом сценарии очень много ограничений для применения данных на нескольких языках.This is a very limiting scenario for multilingual data. Можно использовать только одну кодовую страницу.You can use only a single code page.

Дополнительные символыSupplementary characters

Консорциум Юникода назначает каждому символу уникальную кодовую точку, лежащую в диапазоне от 000000 до 10FFFF.The Unicode Consortium allocates to each character a unique code point, which is a value in the range 000000–10FFFF. Наиболее часто используемые символы имеют значения кодовых точек в диапазоне от 000000 до 00FFFF (65 535 символов), умещающиеся в 8-разрядное или 16-разрядное слово в памяти и на диске.The most frequently used characters have code point values in the range 000000–00FFFF (65,535 characters) which fit into an 8-bit or 16-bit word in memory and on-disk. Этот диапазон обычно обозначается как основное многоязычное поле (BMP).This range is usually designated as the Basic Multilingual Plane (BMP).

При этом Консорциум Юникода установил 16 дополнительных "полей" символов, каждое с таким же размером, как у BMP.But the Unicode Consortium has established 16 additional "planes" of characters, each the same size as the BMP. Это определение обеспечивает Юникоду возможность представлять 1 114 112 символов (то есть 216 * 17 символов) в диапазоне кодовых точек 000000–10FFFF.This definition allows Unicode the potential to represent 1,114,112 characters (that is, 216 * 17 characters) within the code point range 000000–10FFFF. Для символов со значениями кодовых точек, превышающими 00FFFF, требуется от двух до четырех последовательных 8-разрядных слов (UTF-8) или два последовательных 16-разрядных слова (UTF-16).Characters with code point values larger than 00FFFF require two to four consecutive 8-bit words (UTF-8), or two consecutive 16-bit words (UTF-16). Эти символы, находящиеся вне BMP, называются дополнительными символами, а дополнительные последовательные 8-разрядные или 16-разрядные слова — суррогатной парой.These characters located beyond the BMP are called supplementary characters, and the additional consecutive 8-bit or 16-bit words are called surrogate pairs. Подробные сведения о дополнительных символах, суррогатах и суррогатных парах см. в стандарте Юникода.For more information about supplementary characters, surrogates, and surrogate pairs, refer to the Unicode Standard.

SQL ServerSQL Server предоставляет типы данных, такие как nchar и nvarchar, для хранения данных Юникода в диапазоне BMP (000000–00FFFF), который Компонент Database EngineDatabase Engine кодирует с помощью UCS-2.provides data types such as nchar and nvarchar to store Unicode data in the BMP range (000000–00FFFF), which the Компонент Database EngineDatabase Engine encodes using UCS-2.

В SQL Server 2012 (11.x)SQL Server 2012 (11.x) появилось новое семейство параметров сортировки дополнительных символов (_SC), которое можно использоваться с типами данных nchar, nvarchar и sql_variant, чтобы представить полный диапазон символов Юникода (000000–10FFFF).SQL Server 2012 (11.x)SQL Server 2012 (11.x) introduced a new family of supplementary character (_SC) collations that can be used with the nchar, nvarchar, and sql_variant data types to represent the full Unicode character range (000000–10FFFF). Пример: Latin1_General_100_CI_AS_SC или (при использовании параметров сортировки для японского языка) Japanese_Bushu_Kakusu_100_CI_AS_SC.For example: Latin1_General_100_CI_AS_SC or, if you're using a Japanese collation, Japanese_Bushu_Kakusu_100_CI_AS_SC.

В SQL Server 2019 (15.x)SQL Server 2019 (15.x) поддержка дополнительных символов распространяется на типы данных char и varchar в новых параметрах сортировки для UTF-8 (_UTF8).SQL Server 2019 (15.x)SQL Server 2019 (15.x) extends supplementary character support to the char and varchar data types with the new UTF-8 enabled collations (_UTF8). Эти типы данных также способны представлять полный диапазон символов Юникода.These data types are also capable of representing the full Unicode character range.

Примечание

Начиная с SQL Server 2014 (12.x)SQL Server 2014 (12.x) все новые параметры сортировки _140 автоматически поддерживают дополнительные символы.Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x), all new _140 collations automatically support supplementary characters.

Если используются дополнительные символы:If you use supplementary characters:

  • Дополнительные символы могут применяться в операциях сортировки и сравнения только в параметрах сортировки с версией 90 или выше.Supplementary characters can be used in ordering and comparison operations in collation versions 90 or greater.

  • Все новые параметры сортировки версии 100 поддерживают лингвистическую сортировку с обработкой дополнительных символов.All version 100 collations support linguistic sorting with supplementary characters.

  • Дополнительные символы не поддерживаются в метаданных (например, в именах объектов баз данных).Supplementary characters aren't supported for use in metadata, such as in names of database objects.

  • Флаг SC может применяться к следующим параметрам сортировки:The SC flag can be applied to:

    • Параметры сортировки версии 90Version 90 collations
    • Параметры сортировки версии 100Version 100 collations
  • Флаг SC не может применяться к следующим параметрам сортировки:The SC flag can't be applied to:

    • Параметры сортировки Windows версии 80 и нижеVersion 80 non-versioned Windows collations
    • Параметры двоичной сортировки BIN и BIN2The BIN or BIN2 binary collations
    • Параметры сортировки SQL*The SQL* collations
    • Параметры сортировки версии 140 (им не требуется флаг SC, так как они уже поддерживают дополнительные символы)Version 140 collations (these don't need the SC flag, because they already support supplementary characters)

В следующей таблице сравнивается поведение некоторых строковых функций и строковых операторов при использовании дополнительных символов с параметрами сортировки, поддерживающими дополнительные символы (SCA) и без них.The following table compares the behavior of some string functions and string operators when they use supplementary characters with and without a supplementary character-aware (SCA) collation:

Строковая функция или операторString function or operator С параметрами сортировки, поддерживающими дополнительные символыWith an SCA collation Без параметров сортировки, поддерживающих дополнительные символыWithout an SCA collation
CHARINDEXCHARINDEX

LENLEN

PATINDEXPATINDEX
Суррогатная пара UTF-16 считается одной кодовой точкой.The UTF-16 surrogate pair is counted as a single code point. Суррогатная пара UTF-16 считается двумя кодовыми точками.The UTF-16 surrogate pair is counted as two code points.
LEFTLEFT

REPLACEREPLACE

REVERSEREVERSE

RIGHTRIGHT

SUBSTRINGSUBSTRING

STUFFSTUFF
Эти функции обрабатывают каждую суррогатную пару как одну кодовую точку и работают ожидаемым образом.These functions treat each surrogate pair as a single code point and work as expected. Эти функции могут разделять любые суррогатные пары, что может привести к непредвиденным результатам.These functions might split any surrogate pairs and lead to unexpected results.
NCHARNCHAR Возвращает символ, соответствующий заданному значению кодовой точки в Юникоде в диапазоне от 0 до 0x10FFFF.Returns the character that corresponds to the specified Unicode code point value in the range 0–0x10FFFF. Если указанное значение лежит в диапазоне от 0 до 0xFFFF, возвращается один символ.If the specified value lies in the range 0–0xFFFF, one character is returned. Для больших значений возвращается соответствующая суррогатная пара.For higher values, the corresponding surrogate is returned. Если значение превышает 0xFFFF, то вместо соответствующей суррогатной пары возвращается значение NULL.A value higher than 0xFFFF returns NULL instead of the corresponding surrogate.
UNICODEUNICODE Возвращает кодовую точку UTF-16 в диапазоне от 0 до 0x10FFFF.Returns a UTF-16 code point in the range 0–0x10FFFF. Возвращает кодовую точку UCS-2 в диапазоне от 0 до 0x0xFFFF.Returns a UCS-2 code point in the range 0–0xFFFF.
Шаблон — совпадение одного символаMatch One Character Wildcard

Шаблон — несовпадающие символыWildcard - Character(s) Not to Match
Дополнительные символы поддерживаются для всех операций с символами-шаблонами.Supplementary characters are supported for all wildcard operations. Дополнительные символы не поддерживаются для этих операций с символами-шаблонами.Supplementary characters aren't supported for these wildcard operations. Поддерживаются другие операторы символов-шаблонов.Other wildcard operators are supported.

Поддержка GB18030GB18030 support

GB18030 — это отдельный стандарт, который применяется в Китайской Народной Республике для кодирования китайских иероглифов.GB18030 is a separate standard that's used in the People's Republic of China for encoding Chinese characters. В кодировке GB18030 введенные данные могут иметь длину 1, 2 или 4 байт.In GB18030, characters can be 1, 2, or 4 bytes in length. SQL ServerSQL Server предоставляет поддержку символов GB18030, распознает их при вводе из клиентского приложения, преобразуя и сохраняя в виде символов Юникода.provides support for GB18030-encoded characters by recognizing them when they enter the server from a client-side application and converting and storing them natively as Unicode characters. После сохранения на сервере эти символы при выполнении всех последующих операций рассматриваются как символы Юникода.After they're stored in the server, they're treated as Unicode characters in any subsequent operations.

Можно использовать любые параметры сортировки для китайского языка. Желательно использовать последнюю версию (100).You can use any Chinese collation, preferably the latest 100 version. Все параметры сортировки уровня _100 поддерживают лингвистическую сортировку при использовании символов GB18030.All _100 level collations support linguistic sorting with GB18030 characters. Если данные содержат дополнительные символы (суррогатные пары), для оптимизации поиска и сортировки можно использовать параметры сортировки SC, доступные в SQL Server 2019 (15.x)SQL Server 2019 (15.x).If the data includes supplementary characters (surrogate pairs), you can use the SC collations that are available in SQL Server 2019 (15.x)SQL Server 2019 (15.x) to improve searching and sorting.

Примечание

В клиентских средствах, таких как SQL Server Management StudioSQL Server Management Studio, должен использоваться шрифт DengXian для правильного отображения строк, содержащих символы в кодировке GB18030.Ensure that your client tools, such as SQL Server Management StudioSQL Server Management Studio, use the Dengxian font to correctly display strings that contain GB18030-encoded characters.

Поддержка сложных систем письмаComplex script support

SQL ServerSQL Server поддерживает ввод, хранение, изменение и отображение наборов сложных скриптов.can support inputting, storing, changing, and displaying complex scripts. Ниже приведены типы сложных скриптов:Complex scripts include the following types:

  • Скрипты с языками с различным направлением письма, например сочетание английского и арабского текстов.Scripts that include the combination of both right-to-left and left-to-right text, such as a combination of Arabic and English text.
  • Скрипты, в которых форма символов изменяется в зависимости от их положения или где сочетаются разные символы (например, в арабском, хинди, тайском).Scripts whose characters change shape depending on their position, or when combined with other characters, such as Arabic, Indic, and Thai characters.
  • Для таких языков, как тайский, требуются внутренние словари для распознавания слов, так как между словами нет пробелов.Languages, such as Thai, that require internal dictionaries to recognize words because there are no breaks between them.

Приложения баз данных, взаимодействующие с SQL ServerSQL Server , должны применять управляющие элементы, которые поддерживают сложные скрипты.Database applications that interact with SQL ServerSQL Server must use controls that support complex scripts. Стандартные средства управления формами Windows, которые создаются в управляемом коде, поддерживают сложные системы письма.Standard Windows form controls that are created in managed code are complex-script-enabled.

Параметры сортировки для японского языка, добавленные в SQL Server 2017 (14.x);SQL Server 2017 (14.x)Japanese collations added in SQL Server 2017 (14.x);SQL Server 2017 (14.x)

Начиная с версии SQL Server 2017 (14.x);SQL Server 2017 (14.x) поддерживаются новые семейства параметров сортировки для японского языка с перестановками различных параметров (_CS, _AS, _KS, _WS и _VSS).Starting with SQL Server 2017 (14.x);SQL Server 2017 (14.x), new Japanese collation families are supported, with the permutations of various options (_CS, _AS, _KS, _WS, and _VSS).

Чтобы получить список этих параметров сортировки, можно выполнить запрос Компонент SQL Server Database EngineSQL Server Database Engine:To list these collations, you can query the Компонент SQL Server Database EngineSQL Server Database Engine:

SELECT Name, Description FROM fn_helpcollations()  
WHERE Name LIKE 'Japanese_Bushu_Kakusu_140%' OR Name LIKE 'Japanese_XJIS_140%'

Все новые параметры сортировки имеют встроенную поддержку дополнительных символов, поэтому ни у одного из параметров сортировки _140 нет флага SC.All the new collations have built-in support for supplementary characters, so none of the new _140 collations has (or needs) the SC flag.

Эти параметры сортировки поддерживаются в индексах Компонент Database EngineDatabase Engine, оптимизированных для памяти таблицах, индексах columnstore и модулях, скомпилированных в собственном коде.These collations are supported in Компонент Database EngineDatabase Engine indexes, memory-optimized tables, columnstore indexes, and natively compiled modules.

Поддержка UTF-8UTF-8 support

SQL Server 2019 (15.x)SQL Server 2019 (15.x) обеспечивает полную поддержку широко используемой кодировки символов UTF-8 как кодировки импорта или экспорта и как параметров сортировки на уровне столбцов и базы данных для строковых данных.introduces full support for the widely used UTF-8 character encoding as an import or export encoding, and as database-level or column-level collation for string data. Кодировка символов UTF-8 допускается в типах данных char и varchar. Она активируется при создании параметров сортировки с суффиксом UTF8 или изменении существующих параметров на таковые.UTF-8 is allowed in the char and varchar data types, and it's enabled when you create or change an object's collation to a collation that has a UTF8 suffix. Примером может служить изменение LATIN1_GENERAL_100_CI_AS_SC на LATIN1_GENERAL_100_CI_AS_SC_UTF8.One example is changing LATIN1_GENERAL_100_CI_AS_SC to LATIN1_GENERAL_100_CI_AS_SC_UTF8.

Кодировка UTF-8 доступна только для параметров сортировки Windows, которые поддерживают дополнительные символы, представленные в SQL Server 2012 (11.x)SQL Server 2012 (11.x).UTF-8 is available only to Windows collations that support supplementary characters, as introduced in SQL Server 2012 (11.x)SQL Server 2012 (11.x). Типы данных nchar и nvarchar допускают только кодировку UCS-2 или UTF-16 и остаются неизменными.The nchar and nvarchar data types allow UCS-2 or UTF-16 encoding only, and they remain unchanged.

Различия в хранении UTF-8 и UTF-16Storage differences between UTF-8 and UTF-16

Консорциум Юникода назначает каждому символу уникальную кодовую точку, лежащую в диапазоне от 000000 до 10FFFF.The Unicode Consortium allocates to each character a unique code point, which is a value in the range 000000–10FFFF. В SQL Server 2019 (15.x)SQL Server 2019 (15.x) кодировки UTF-8 и UTF-16 могут представлять полный диапазон.With SQL Server 2019 (15.x)SQL Server 2019 (15.x), both UTF-8 and UTF-16 encodings are available to represent the full range:

  • В кодировке UTF-8 символам в диапазоне ASCII (000000–00007F) требуется 1 байт, кодовым точкам с 000080 по 0007FF необходимо 2 байта, кодовым точкам с 000800 по 00FFFF — 3 байта, а кодовым точкам 0010000–0010FFFF — 4 байта.With UTF-8 encoding, characters in the ASCII range (000000–00007F) require 1 byte, code points 000080–0007FF require 2 bytes, code points 000800–00FFFF require 3 bytes, and code points 0010000–0010FFFF require 4 bytes.
  • В кодировке UTF-16 кодовым точкам 000000–00FFFF необходимо 2 байта, а кодовым точкам 0010000–0010FFFF — 4 байта.With UTF-16 encoding, code points 000000–00FFFF require 2 bytes, and code points 0010000–0010FFFF require 4 bytes.

В таблице ниже приведены байты хранения кодировки для каждого диапазона символов и типа кодировки.The following table lists the encoding storage bytes for each character range and encoding type:

Диапазон кодов (шестнадцатеричный)Code range (hexadecimal) Диапазон кодов (десятичный)Code range (decimal) Байтов хранения 1 в UTF-8Storage bytes1 with UTF-8 Байтов хранения 1 в UTF-16Storage bytes1 with UTF-16
000000–00007F000000–00007F 0–1270–127 11 22
000080–00009F000080–00009F
0000A0–0003FF0000A0–0003FF
000400–0007FF000400–0007FF
128–159128–159
160–1023160–1,023
1024–20471,024–2,047
22 22
000800–003FFF000800–003FFF
004000–00FFFF004000–00FFFF
2048–16 3832,048–16,383
16 384–65 53516,384–65,535
33 22
010000–03FFFF 2010000–03FFFF2

040000–10FFFF 2040000–10FFFF2
65 536–262 143 265,536–262,1432

262 144–1 114 111 2262,144–1,114,1112
44 44

1 Байты хранения относятся к длине кодируемых байтов, а не к объему хранения на диске для типа данных.1 Storage bytes refers to the encoded byte length, not the data-type on-disk storage size. Дополнительные сведения об объеме хранения на диске см. в статьях о nchar и nvarchar и char и varchar.For more information about on-disk storage sizes, see nchar and nvarchar and char and varchar.

2 Диапазон кодовых точек для дополнительных символов.2 The code point range for supplementary characters.

Совет

Часто считают, что в типах данных CHAR(n) и VARCHAR(n) или NCHAR(n) и NVARCHAR(n) число n указывает на количество символов.It's common to think, in CHAR(n) and VARCHAR(n) or in NCHAR(n) and NVARCHAR(n), that n defines the number of characters. Причина в том, что, например, в столбце CHAR(10) могут храниться 10 символов ASCII в диапазоне 0–127 при использовании таких параметров сортировки, как Latin1_General_100_CI_AI, так как каждый символ в этом диапазоне занимает 1 байт.This is because, in the example of a CHAR(10) column, 10 ASCII characters in the range 0–127 can be stored by using a collation such as Latin1_General_100_CI_AI, because each character in this range uses only 1 byte.

Однако число n в CHAR(n) и VARCHAR(n) — это размер строки в байтах (0–8000), а в NCHAR(n) и NVARCHAR(n) число n — это размер строки в парах байтов (0–4000).However, in CHAR(n) and VARCHAR(n), n defines the string size in bytes (0–8,000), and in NCHAR(n) and NVARCHAR(n), n defines the string size in byte-pairs (0–4,000). n никогда не определяет количество хранимых символов.n never defines numbers of characters that can be stored.

Как следует из таблицы, правильный выбор кодировки Юникода и типа данных позволяет существенно сократить объем хранимых данных, а неправильный может увеличить занимаемый объем хранилища в зависимости от используемой кодировки.As you've just seen, choosing the appropriate Unicode encoding and data type might give you significant storage savings or increase your current storage footprint, depending on the character set in use. Например, при использовании параметров сортировки Latin с поддержкой UTF-8, такой как Latin1_General_100_CI_AI_SC_UTF8, в столбце CHAR(10) могут храниться 10 байтов и помещаются 10 символов ASCII в диапазоне 0–127.For example, when you use a Latin collation that's UTF-8 enabled, such as Latin1_General_100_CI_AI_SC_UTF8, a CHAR(10) column stores 10 bytes and can hold 10 ASCII characters in the range 0–127. Однако в нем помещаются только 5 символов в диапазоне 128–2047 или 3 символа в диапазоне 2048–65 535.But it can hold only 5 characters in the range 128–2047 and only 3 characters in the range 2048–65535. Для сравнения, так как в столбце NCHAR(10) хранятся 10 пар байтов (20 байтов), в нем помещаются 10 символов в диапазоне 0–65 535.By comparison, because a NCHAR(10) column stores 10 byte-pairs (20 bytes), it can hold 10 characters in the range 0–65535.

При выборе кодировки UTF-8 или UTF-16 для базы данных или столбца примите во внимание то, как будут распределяться хранимые строковые данные.Before you choose whether to use UTF-8 or UTF-16 encoding for a database or column, consider the distribution of string data that will be stored:

  • Если это будет преимущественно диапазон ASCII 0–127 (как в случае английского языка), то каждому символу потребуется 1 байт в UTF-8 и 2 байта в UTF-16.If it's mostly in the ASCII range 0–127 (such as English), each character requires 1 byte with UTF-8 and 2 bytes with UTF-16. Использование UTF-8 сокращает объем хранения.Using UTF-8 provides storage benefits. Изменение текущего типа данных столбца с символами ASCII в диапазоне 0–127 с NCHAR(10) на CHAR(10) с использованием параметров сортировки для UTF-8 на 50 % снижает требуемый объем хранилища.Changing an existing column data type with ASCII characters in the range 0–127 from NCHAR(10) to CHAR(10), and using an UTF-8 enabled collation, translates into a 50 percent reduction in storage requirements. Такое снижение связано с тем, что NCHAR(10) требует для хранения 20 байтов, тогда как CHAR(10) требует 10 байтов для представления той же строки Юникода.This reduction is because NCHAR(10) requires 20 bytes for storage, compared with CHAR(10), which requires 10 bytes for the same Unicode string representation.
  • Выше диапазона ASCII практически для любого алфавита с латинскими символами, а также для греческого, кириллического, коптского, армянского, иврита, арабского, сирийского, Тана и Нко потребуется 2 байта на каждый символ в UTF-8 и UTF-16.Above the ASCII range, almost all Latin-based script, and Greek, Cyrillic, Coptic, Armenian, Hebrew, Arabic, Syriac, Tāna, and N’Ko, require 2 bytes per character in both UTF-8 and UTF-16. В таких случаях нет особой разницы в объеме хранения у сопоставимых типов данных (например, при использовании char или nchar).In these cases, there aren't significant storage differences for comparable data types (for example, between using char or nchar).
  • Если будут использоваться преимущественно восточноазиатские языки (например, корейский, китайский и японский), каждому символу потребуется 3 байта в UTF-8 и 2 байта в UTF-16.If it's mostly East Asian script (such as Korean, Chinese, and Japanese), each character requires 3 bytes with UTF-8 and 2 bytes with UTF-16. В этом случае использование UTF-16 позволяет сократить объем хранения.Using UTF-16 provides storage benefits.
  • Символам в диапазоне 010000–10FFFF требуется 4 байта как в кодировке UTF-8, так и в кодировке UTF-16.Characters in the range 010000–10FFFF require 4 bytes in both UTF-8 and UTF-16. В таких случаях нет разницы в объеме хранения у сопоставимых типов данных (например, при использовании char или nchar).In these cases, there aren't storage differences for comparable data types (for example, between using char or nchar).

Сведения о других факторах, которые необходимо учитывать, см. в статье Написание инструкций Transact-SQL, адаптированных к международному использованию.For other considerations, see Write International Transact-SQL Statements.

Преобразование в UTF-8Converting to UTF-8

Так как в CHAR (n) и VARCHAR (n) или NCHAR (n) и NVARCHAR (n) n определяет размер хранилища в байтах, а не число сохраняемых символов, важно определить размер типа данных, в который необходимо выполнить преобразование, чтобы избежать усечения данных.Because in CHAR(n) and VARCHAR(n) or in NCHAR(n) and NVARCHAR(n), the n defines the byte storage size, not the number of characters that can be stored, it's important to determine the data type size you must convert to, in order to avoid data truncation.

Например, рассмотрим столбец, определенный как NVARCHAR(100) , в котором хранятся 180 байт японских символов.For example, consider a column defined as NVARCHAR(100) that stores 180 bytes of Japanese characters. В этом примере данные столбца в настоящее время кодируются с помощью UCS-2 или UTF-16, где используется 2 байта на символ.In this example, the column data is currently encoded using UCS-2 or UTF-16, which uses 2 bytes per character. Преобразовать тип столбца в VARCHAR(200) недостаточно, чтобы предотвратить усечение данных, так как новый тип данных может хранить 200 байт, но японские символы в кодировке UTF-8 занимают 3 байта.Converting the column type to VARCHAR(200) is not enough to prevent data truncation, because the new data type can only store 200 bytes, but Japanese characters require 3 bytes when encoded in UTF-8. Поэтому столбец должен быть определен как VARCHAR(270) во избежание потери данных в результате усечения.So the column must be defined as VARCHAR(270) to avoid data loss through data truncation.

Таким образом, перед преобразованием существующих данных в UTF-8 необходимо заранее узнать предполагаемый размер в байтах для определения столбца и соответствующим образом настроить новый размер типа данных.Therefore, it's required to know in advance what's the projected byte size for the column definition before converting existing data to UTF-8, and adjust the new data type size accordingly. См. скрипт Transact-SQLTransact-SQL или записную книжку SQL в разделе Примеры данных GitHub, где используется функция DATALENGTH и инструкция COLLATE для определения требований к длине данных для операций преобразования UTF-8 в существующей базе данных.Refer to the Transact-SQLTransact-SQL script or the SQL Notebook in the Data Samples GitHub, which use the DATALENGTH function and the COLLATE statement to determine the correct data length requirements for UTF-8 conversion operations in an existing database.

Чтобы изменить параметры сортировки столбца и тип данных в существующей таблице, используйте один из методов, описанных в разделе Задание или изменение параметров сортировки столбца.To change the column collation and data type in an existing table, use one of the methods described in Set or Change the Column Collation.

Для изменения параметров сортировки базы данных, позволяющих новым объектам наследовать параметры сортировки базы данных по умолчанию или изменять параметры сортировки сервера, чтобы новые базы данных по умолчанию наследовали системные параметры сортировки, см. раздел Связанные задачи этой статьи.To change the database collation, allowing new objects to inherit the database collation by default, or to change the server collation, allowing new databases to inherit the system collation by default, see the Related tasks section of this article.

ЗадачаTask РазделTopic
Описание задания или изменения параметров сортировки экземпляра SQL Server.Describes how to set or change the collation of the instance of SQL Server. Обратите внимание, что изменение параметров сортировки на уровне сервера не меняет параметры сортировки существующих баз данных.Note that changing the server collation does not change the collation of existing databases. Задание или изменение параметров сортировки сервераSet or Change the Server Collation
Описание задания или изменения параметров сортировки пользовательской базы данных.Describes how to set or change the collation of a user database. Обратите внимание, что изменение параметров сортировки на уровне базы данных не меняет параметры сортировки существующих столбцов таблицы.Note that changing a database collation does not change the collation of existing table columns. Установка и изменение параметров сортировки базы данныхSet or Change the Database Collation
Описание задания или изменения параметров сортировки для столбца в базе данныхDescribes how to set or change the collation of a column in the database Задание или изменение параметров сортировки столбцаSet or Change the Column Collation
Описание способа возврата сведений о параметрах сортировки на уровне сервера, базы данных или столбцаDescribes how to return collation information at the server, database, or column level Просмотр сведений о параметрах сортировкиView Collation Information
Описание способа написания инструкций Transact-SQL, которые имеют большую степень языковой переносимости или лучше поддерживают несколько языковDescribes how to write Transact-SQL statements that are more portable from one language to another, or support multiple languages more easily Написание инструкций Transact-SQL, адаптированных к международному использованиюWrite International Transact-SQL Statements
Описание способа изменения языка сообщений об ошибках и параметров отображения дат, времени и валютыDescribes how to change the language of error messages and preferences for how date, time, and currency data is used and displayed Задание языка сеансаSet a Session Language

Дополнительные сведения см. в следующих связанных ресурсах:For more information, see the following related content:

См. также разделSee also

Параметры сортировки автономной базы данных Contained Database Collations
Выбор языка при создании полнотекстового индекса Choose a Language When Creating a Full-Text Index
sys.fn_helpcollations (Transact-SQL) sys.fn_helpcollations (Transact-SQL)
Однобайтовые и многобайтовые кодировкиSingle-Byte and Multibyte Character Sets