Cyrillic general ci as что за кодировка
А какая разница какой Collation выбрать?
Статья подготовлена для студентов курса «MS SQL Server разработчик»
Хочу поделиться историей из одного из предыдущих проектов, которая иллюстрирует, что Collation нужно выбирать очень вдумчиво. И о том, что бывает, если этот параметр все-таки выбрали неверно, и какие варианты решения проблемы бывают.
Сначала небольшое введение о том, что же такое Collation. В SQL Server параметр Collation указывает серверу, как нужно сортировать и сравнивать строки. Вот, например, строки “Apple” и “apple”. Они разные или нет? Это зависит от указанного Collation. Если с регистром все более менее понятно, то что делать с примером “елка” и “ёлка”? Считать их как одинаковые или как разные? Это все тоже в Collation.
История случилась в проекте, функционал которого очень похож на DropBox или Google Диск. Он предоставляет возможность управлять своими синхронизированными папками и файлами на разных машинах, а также возможность другим пользователям иметь доступ к данной синхронизированной папке.
Итак, история началась с того, что на Prod серверах было 75-90% ошибок в логах (см скриншот ниже), и непонятно откуда они возникали, и в чем была их причина. Ошибка звучала так: “ReadWrtLst is not complete”. Далее шли детали пользователя и его папки.
По коду довольно быстро было найдено место, которое генерирует ошибку, но понять, почему она возникала, и как ее воспроизвести, у нас не получалось.Понятно было только то, что ошибка каким-то образом связана с тем, что пользователь как-то умудрился сделать еще одну папку с таким же именем в своей ОС.
Мы собрали информацию по пользователям, по которым выдается эта ошибка. И тут нас ждал первый сюрприз: из миллионов пользователей системы эта ошибка случалась всего у 50. И эти 50 пользователей генерируют 90% логов об ошибках. Так как ситуацию не получалось воспроизвести, то мы решили связаться с одним из пользователей и выяснить, по какой причине у него не синхронизируется одна из папок. Папка выглядела для нас так же, как и другие, единственное отличие было в том, что называлась она на языке пользователя с использованием иероглифов. А пользователь был японцем. К слову сказать, среди этих 50 пользователей, японцев было большинство.
Благодаря одному из разработчиков команды, нам удалось воспроизвести ошибку. Ошибка заключалась в том, что операционная система считала названия папок разными, а SQL Server считал их одинаковыми из-за выбранного Collation.
Collation, который использовался в проекте:
SQL_Latin1_General_CP1_CI_AS
Небольшое отступление о том, как прочесть Collation. (Если вы знакомы с ним, смело пропускайте.)
Итак, в Collation есть несколько частей:
Этот Collation был когда-то Collation по умолчанию, когда устанавливали SQL Server.
Какие опции есть еще?
Все текстовые поля в БД использовали тип NVARCHAR.
Получается, что, так как текущий Collation игнорировал разницу написания японских иероглифов и разницу в ширине символов, то SQL Server сравнивал строки не так, как это делала операционная система, что и вызывало проблему, т.е. пользователь мог создать папки, не мог их добавить в систему для синхронизации. Тоже самое возникло бы в дальнейшем при сравнении имен файлов.
Мы стали думать о том, как можно решить данную проблему и изменить Collation.
Collation можно выставлять на нескольких уровнях:
При этом, не рекомендуется иметь внутри БД разные Collation, потому что каждый раз при сравнении строк с разным Collation нужно будет делать преобразование с помощью COLLATE, указывая серверу, какой порядок сравнения ему нужно использовать.
Какие опции есть в ситуации, когда понятно, что Collation выбран не очень правильно?
Первая опция — изменение Collation на уровне БД — наиболее сложна. В случае с БД потребовалось бы пересоздать базу данных и перезалить туда данные. Так как система работала 24/7, эта опция была отвергнута сразу.
Вторая опция про изменение поля: самый простой вариант ее реализовать — это добавить поле с нужным Collation и туда перенести данные. Но тогда нужно будет изменять код в БД, который работает с этим полем, а кода в БД было очень много.
Третья опция понравилась нам больше всего, так как в теории это вносило меньше всего изменений, так как основное поле продолжало бы существовать с текущим Collation, и мы бы не имели проблем с его преобразованием, при этом весь нужный функционал в виде учета японской азбуки или широких символов бы работал. Минус в том, что нужно было вносить изменения в часть ПО, но так как эта серверная часть, это можно было сделать.
Четвертая опция была наиболее простой в данном случае, потому что общее число пользователей было несколько миллионов, а проблема возникала только у 50. Однако, если бы приложение активно использовалось в Японии, данное решение было бы мало применимо.
После представления данных руководству, было решено известить пользователей о том, что ПО не поддерживает ряд символов, и при их использовании в названии синхронизируемых файлов и папок ПО может работать некорректно. Это временное решение, потому что при дальнейшем распространении, количество пользователей, сталкивающихся с подобной проблемой, будет нарастать, и нужно будет что-то менять, используя первые три опции.
Лучший вариант выбора Collation — исходить из требований вашего приложения. Если вам нужно, чтобы SQL Server сравнивал строки так же как ОС, то Collation по умолчанию точно неверен. К сожалению, такие нюансы редко видны на старте проекта при проектировании системы, но, надеюсь, прочитав статью, Вы вспомните об описанной ситуации и не наступите на подобные грабли сами.
Разница между collation Cyrillic_General и Cyrillic_General_100
Устанавливаю SQL Server 2016 Express Edition на Windows 2016 Server, хотел выбрать кириллическую collation, однако их находится две: Cyrillic_General и Cyrillic_General_100
В чём между ними разница? Сомневаюсь в выборе. Вижу, что почти все сопоставления имеют два варианта (со _100 и без), что это значит и для чего нужно?
2 ответа 2
Cyrillic_General и Cyrillic_General_100
В чём между ними разница?
Насколько я исследовал этот вопрос, символы русского алфавита (А-Я, а-я), а также символы латинского алфавита, цифры и знаки (с кодами 0x0020-0x007E) и в Cyrillic_General и в Cyrillic_General_100 обрабатываются одинаково. Однако есть разница для кириллических символов не используемых в русском языке.
Также в Cyrillic_General буквы Ѐ и ѐ не преобразуются корректно к противоположному регистру, тогда как в Cyrillic_General_100 преобразование регистра для них корректное:
Есть разница и для некоторых других кириллических символов (и для не кириллических тоже).
Обратите внимание также, что при установке задаётся collation инстанса. Для создаваемых в последствие баз данных всегда можно указать любой другой нужный collation (если не указать, то БД будет создана с collation инстанса). Поэтому, если вы не используете символы русского алфавита в названиях баз данных, логинов, серверных ролей и прочих instance-scope вещах, то, в принципе, можете выбрать даже и Latin1_General_100.
Имя параметров сортировки Windows (Transact-SQL)
Задает имя параметров сортировки Windows с помощью предложения COLLATE в SQL Server. Имя параметра сортировки Windows состоит из двух частей: обозначения параметров сортировки и стиля сравнения.
Синтаксические обозначения в Transact-SQL
Синтаксис
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
CollationDesignator
Указывает базовые параметры сортировки, используемые параметрами сортировки Windows. Правила базовых параметров сортировки отвечают за следующее.
CaseSensitivity
CI указывает, что регистр символов не учитывается, CS определяет учет регистра.
AccentSensitivity
AI означает, что диакритические знаки пропускаются, AS показывает, что они учитываются.
KanatypeSensitive
Пропуск этого параметра означает, что тип японской азбуки не учитывается, KS означает, что тип японской азбуки учитывается.
WidthSensitivity
Пропуск этого параметра означает, что ширина символов не учитывается, WS означает, что ширина символов учитывается.
Область применения: Начиная с SQL Server 2017 (14.x);
Пропуск этого параметра означает, что знаки выбора варианта не учитываются, VSS означает, что знаки выбора варианта учитываются.
UTF8
Область применения: Начиная с SQL Server 2019 (15.x)
Указывает кодировку UTF-8, используемую для допустимых типов данных. Дополнительные сведения см. в статье Collation and Unicode Support.
BIN
Указывает подлежащий использованию двоичный порядок сортировки, применяющийся для обеспечения обратной совместимости.
BIN2
Определяет двоичный порядок сортировки, использующий семантику сравнения кодовых точек.
Комментарии
Первая инструкция выводит как прописную, так и строчную форму символа в предыдущей версии параметров сортировки (параметры сортировки не влияют на доступность символов при работе с данными в Юникоде). Однако вторая инструкция возвращает прописную букву для параметров сортировки Latin1_General_CI_AS, так как в них не определено соответствие со строчной буквой для этой кодовой точки.
При работе с некоторыми языками, может быть крайне необходимым избегать прошлых сортировок. Например, это является верным для Telegu.
В некоторых случаях сортировки Windows и сортировки службы SQL Server могут создать разные планы запросов для одного и того же запроса.
Примеры
Ниже приведены некоторые примеры имен параметров сортировки Windows.
Latin1_General_100_CI_AS
Параметры сортировки используют правила сортировки словаря Latin1 General и ставят в соответствие кодовую страницу 1252. Это параметры сортировки версии _100 без учета регистра (CI) и с учетом диакритических знаков (AS).
Estonian_CS_AS
Параметры сортировки используют правила сортировки словаря Estonian и сопоставлены с кодовой страницей 1257. Это параметры сортировки версии _80 (на что указывает отсутствие номера версии в имени) с учетом регистра (CI) и диакритических знаков (AS).
Japanese_Bushu_Kakusu_140_BIN2
Параметры сортировки используют правила сортировки двоичной кодовой точки и сопоставлены с кодовой страницей 932. Это правила сортировки версии _140; правила сортировки словаря Japanese Bushu Kakusu не учитываются.
Параметры сортировки Windows
Чтобы сформировать список параметров сортировки Windows, которые поддерживаются экземпляром SQL Server, выполните следующий запрос.
В следующей таблице приведены все параметры сортировки Windows, поддерживаемые в SQL Server.
Локаль Windows | Версия параметров сортировки 100 | Версия параметров сортировки 90 |
---|---|---|
Эльзасский (Франция) | Latin1_General_100_ | Недоступно |
Амхарик (Эфиопия) | Latin1_General_100_ | Недоступно |
Армянский (Армения) | Cyrillic_General_100_ | Недоступно |
Ассамский (Индия) | Assamese_100_ 1 | Недоступно |
Бенгальский (Бангладеш) | Bengali_100_ 1 | Недоступно |
Башкирский (Россия) | Bashkir_100_ | Недоступно |
Баскский | Latin1_General_100_ | Недоступно |
Bengali (India) | Bengali_100_ 1 | Недоступно |
Боснийский (Босния и Герцеговина, кириллица) | Bosnian_Cyrillic_100_ | Недоступно |
Боснийский (Босния и Герцеговина, латиница) | Bosnian_Latin_100_ | Недоступно |
Бретонский (Франция) | Breton_100_ | Недоступно |
Chinese (Macao SAR) | Chinese_Traditional_Pinyin_100_ | Недоступно |
Chinese (Macao SAR) | Chinese_Traditional_Stroke_Order_100_ | Недоступно |
Chinese (Singapore) | Chinese_Simplified_Stroke_Order_100_ | Недоступно |
Корсиканский (Франция) | Corsican_100_ | Недоступно |
Хорватский (Босния и Герцеговина, латиница) | Croatian_100_ | Недоступно |
Дари (Афганистан) | Dari_100_ | Недоступно |
Английский (Индия) | Latin1_General_100_ | Недоступно |
Английский (Малайзия) | Latin1_General_100_ | Недоступно |
Английский (Сингапур) | Latin1_General_100_ | Недоступно |
Филиппинский (Филиппины) | Latin1_General_100_ | Недоступно |
Фризский (Нидерланды) | Frisian_100_ | Недоступно |
Грузинский (Грузия) | Cyrillic_General_100_ | Недоступно |
Гренландский (Гренландия) | Danish_Greenlandic_100_ | Недоступно |
Гуджарати (Индия) | Indic_General_100_ 1 | Indic_General_90_ |
Хауса (Нигерия, латиница) | Latin1_General_100_ | Недоступно |
Хинди (Индия) | Indic_General_100_ 1 | Indic_General_90_ |
Игбо (Нигерия) | Latin1_General_100_ | Недоступно |
Инуитский (Канада, латиница) | Latin1_General_100_ | Недоступно |
Инуитский (Канада) | Latin1_General_100_ | Недоступно |
Ирландский (Ирландия) | Latin1_General_100_ | Недоступно |
Японский (Япония) | Japanese_XJIS_100_ | Japanese_90_, Japanese_ |
Японский (Япония) | Japanese_Bushu_Kakusu_100_ | Недоступно |
Каннада (Индия) | Indic_General_100_ 1 | Indic_General_90_ |
Кхмерский (Камбоджа) | Khmer_100_ 1 | Недоступно |
Киче (Гватемала) | Modern_Spanish_100_ | Недоступно |
Киньяруанда (Руанда) | Latin1_General_100_ | Недоступно |
Конкани (Индия) | Indic_General_100_ 1 | Indic_General_90_ |
Лаосский (Лаосская Народно-Демократическая Республика) | Lao_100_ 1 | Недоступно |
Нижний Сорбский (Германия) | Latin1_General_100_ | Недоступно |
Люксембургский (Люксембург) | Latin1_General_100_ | Недоступно |
Малайялам (Индия) | Indic_General_100_ 1 | Недоступно |
Мальтийский (Мальта) | Maltese_100_ | Недоступно |
Маорийский (Новая Зеландия) | Maori_100_ | Недоступно |
Мапудунгун (Чили) | Mapudungan_100_ | Недоступно |
Маратхи (Индия) | Indic_General_100_ 1 | Indic_General_90_ |
Могавк (Канада) | Mohawk_100_ | Недоступно |
Монгольский (КНР) | Cyrillic_General_100_ | Недоступно |
Непальский (Непал) | Nepali_100_ 1 | Недоступно |
Норвежский (букмол, Норвегия) | Norwegian_100_ | Недоступно |
Норвежский (нюнорск/ландсмол, Норвегия) | Norwegian_100_ | Недоступно |
Окситанский (Франция) | French_100_ | Недоступно |
Ория (Индия) | Indic_General_100_ 1 | Недоступно |
Пушту (Афганистан) | Pashto_100_ 1 | Недоступно |
Персидский (Иран) | Persian_100_ | Недоступно |
Панджабский (Индия) | Indic_General_100_ 1 | Indic_General_90_ |
Кечуа (Боливия) | Latin1_General_100_ | Недоступно |
Кечуа (Эквадор) | Latin1_General_100_ | Недоступно |
Кечуа (Перу) | Latin1_General_100_ | Недоступно |
Романш (Швейцария) | Romansh_100_ | Недоступно |
Саамский (Инари, Финляндия) | Sami_Sweden_Finland_100_ | Недоступно |
Саамский (Луле, Норвегия) | Sami_Norway_100_ | Недоступно |
Саамский (Луле, Швеция) | Sami_Sweden_Finland_100_ | Недоступно |
Саамский (Северный, Финляндия) | Sami_Sweden_Finland_100_ | Недоступно |
Саамский (Северный, Норвегия) | Sami_Norway_100_ | Недоступно |
Саамский (Северный, Швеция) | Sami_Sweden_Finland_100_ | Недоступно |
Саамский (Скольт, Финляндия) | Sami_Sweden_Finland_100_ | Недоступно |
Саамский (Южный, Норвегия) | Sami_Norway_100_ | Недоступно |
Саамский (Южный, Швеция) | Sami_Sweden_Finland_100_ | Недоступно |
Санскрит (Индия) | Indic_General_100_ 1 | Indic_General_90_ |
Сербский (Босния и Герцеговина, кириллица) | Serbian_Cyrillic_100_ | Недоступно |
Сербский (Босния и Герцеговина, латиница) | Serbian_Latin_100_ | Недоступно |
Сербский (Сербия, кириллица) | Serbian_Cyrillic_100_ | Недоступно |
Сербский (Сербия, латиница) | Serbian_Latin_100_ | Недоступно |
Сесуто са Лебоа/Северный Суто (Южная Африка) | Latin1_General_100_ | Недоступно |
Сетсвана/Тсвана (Южная Африка) | Latin1_General_100_ | Недоступно |
Синхала (Шри-Ланка) | Indic_General_100_ 1 | Недоступно |
Суахили (Кения) | Latin1_General_100_ | Недоступно |
Сирийский (Сирия) | Syriac_100_ 1 | Syriac_90_ |
Таджикский (Таджикистан) | Cyrillic_General_100_ | Недоступно |
Тамазихт (Алжир, латиница) | Tamazight_100_ | Недоступно |
Тамильский (Индия) | Indic_General_100_ 1 | Indic_General_90_ |
Телугу (Индия) | Indic_General_100_ 1 | Indic_General_90_ |
Тибетский (КНР) | Tibetan_100_ 1 | Недоступно |
Туркменский (Туркменистан) | Turkmen_100_ | Недоступно |
Уйгурский (КНР) | Uighur_100_ | Недоступно |
Верхний Сорбский (Германия) | Upper_Sorbian_100_ | Недоступно |
Урду (Пакистан) | Urdu_100_ | Недоступно |
Валлийский (Великобритания) | Welsh_100_ | Недоступно |
Волоф (Сенегал) | French_100_ | Недоступно |
Коса/исиКоса (Южная Африка) | Latin1_General_100_ | Недоступно |
Саха (Россия) | Yakut_100_ | Недоступно |
Носу (КНР) | Latin1_General_100_ | Недоступно |
Йоруба (Нигерия) | Latin1_General_100_ | Недоступно |
Зулу/исиЗулу (Южная Африка) | Latin1_General_100_ | Недоступно |
Устарело. Отсутствует на уровне сервера в SQL Server 2008 и более поздних версиях | Hindi | Hindi |
Устарело. Отсутствует на уровне сервера в SQL Server 2008 и более поздних версиях | Korean_Wansung_Unicode | Korean_Wansung_Unicode |
Устарело. Отсутствует на уровне сервера в SQL Server 2008 и более поздних версиях | Lithuanian_Classic | Lithuanian_Classic |
Устарело. Отсутствует на уровне сервера в SQL Server 2008 и более поздних версиях | Macedonian | Macedonian |
1 Параметры сортировки Windows «Только для Юникода» можно применять только к данным на уровне столбца или уровне выражения. Они не могут использоваться в качестве параметров сортировки базы данных или сервера.
2 Как и при параметрах сортировки в китайском (Тайвань), в китайском (Макао) используются правила упрощенного китайского языка, но в отличие от китайского (Тайвань) используется кодовая страница 950.
Поддержка параметров сортировки и Юникода
Параметры сортировки SQL Server предоставляют свойства, управляющие правилами сортировки, учета регистра и диакритических знаков в данных. Параметры сортировки, используемые с символьными типами данных, такими как char или varchar, указывают кодовую страницу и соответствующие символы, которые могут быть представлены для этого типа данных.
Независимо от того, устанавливается ли новый экземпляр SQL Server, восстанавливается ли база данных из резервной копии или сервер соединяется с клиентскими базами данных, важно понимать требования к языковому стандарту, знать порядок сортировки и необходимость учета регистра или диакритических знаков в данных, с которыми вы работаете. Описание того, как получить список доступных параметров сортировки в экземпляре SQL Server, см. в статье sys.fn_helpcollations (Transact-SQL).
Для эффективного использования поддержки параметров сортировки в SQL Serverнеобходимо понимать термины, представленные в этой статье, и их связь с характеристиками данных.
Термины, связанные с параметрами сортировки
Параметры сортировки
Параметры сортировки задают битовые шаблоны, представляющие каждый символ в наборе данных. Параметры сортировки определяют правила, используемые при сортировке и сравнении данных. SQL Server поддерживает хранение объектов с различными параметрами сортировки в одной базе данных. Для столбцов в кодировке, отличающейся от Юникода, настройка параметров сортировки определяет кодовую страницу данных и соответствующую возможность представления символов. Данные, которые перемещаются между столбцами в форматах, отличных от Юникода, необходимо преобразовывать из исходной кодовой страницы в целевую.
Результат выполнения инструкцииTransact-SQL может различаться в зависимости от контекста различных баз данных, которые имеют свои параметры сортировки. По возможности используйте стандартные параметры сортировки для всей организации. Тем самым не придется указывать параметры сортировки для каждого символа или выражения Юникода. Если необходимо работать с объектами, имеющими различные параметры сортировки и кодовые страницы, создание запросов должно производиться с учетом очередности параметров сортировки. Дополнительные сведения см. в разделе Очередность параметров сортировки (Transact-SQL).
Параметры сортировки могут учитывать регистр, диакритические знаки, тип японской азбуки, ширину символов и знаки выбора варианта. В SQL Server 2019 (15.x) появился дополнительный параметр для кодирования UTF-8.
Эти параметры можно задать путем их добавления к имени параметров сортировки. Например, параметр Japanese_Bushu_Kakusu_100_CS_AS_KS_WS_UTF8 определяет параметры сортировки с учетом диакритических знаков, регистра, типа японской азбуки, ширины символов и кодировки UTF-8. Еще один пример: параметр Japanese_Bushu_Kakusu_140_CI_AI_KS_WS_VSS определяет параметры сортировки без учета регистра, без учета диакритических знаков, с учетом типа японской азбуки, с учетом ширины символов, с учетом знаков выбора варианта и с использованием кодировки не в Юникоде.
В приведенной ниже таблице описывается режим работы, связанный с этими параметрами.
Параметр | Описание |
---|---|
С учетом регистра (_CS) | Различаются буквы верхнего и нижнего регистров. При выборе этого параметра буквы нижнего регистра при сортировке ставятся перед соответствующими буквами верхнего регистра. Если этот параметр не выбран, параметры сортировки не учитывают регистр. То есть при сортировке SQL Server считает буквы верхнего и нижнего регистров и делает их идентичными друг другу. Можно явно выбрать нечувствительность к регистру, указав параметр _CI. |
С учетом диакритических знаков (_AS) | Различаются символы с диакритическими знаками и без них. Например, «a» отлично от «ấ». Если этот параметр не выбран, параметры сортировки не учитывают диакритические знаки. То есть при сортировке SQL Server рассматривает варианты букв с диакритическими знаками и без них как идентичные. Можно явно выбрать нечувствительность к диакритическим знакам, указав параметр _АI. |
С учетом типа японской азбуки (_KS) | Различаются два вида японской азбуки: хирагана и катакана. Если этот параметр не выбран, параметры сортировки не учитывают тип японской азбуки. То есть при сортировке SQL Server рассматривает символы хирагана и катакана как идентичные. Пропуск этого параметра является единственным способом указания нечувствительности к типу японской азбуки. |
С учетом ширины символов (_WS) | Отличия между символами полной ширины и средней ширины. Если этот параметр не выбран, SQL Server принимает отображение одного и того же символа полной ширины и средней ширины как идентичное для целей сортировки. Пропуск этого параметра является единственным способом указания нечувствительности к ширине символов. |
С учетом знаков выбора варианта (_VSS) | Различаются идеографические знаки выбора варианта в японских параметрах сортировки Japanese_Bushu_Kakusu_140 и Japanese_XJIS_140, появившихся в SQL Server 2017 (14.x);. Последовательность вариантов состоит из базового знака и дополнительного знака выбора вариантов. Если этот параметр _VSS не выбран, параметры сортировки не учитывают знак выбора варианта, а сам знак выбора варианта не учитывается при сравнении. То есть при сортировке SQL Server считает символы, основанные на одном базовом символе, но с разными знаками выбора варианта, равнозначными. Дополнительные сведения см. в статье Unicode Ideographic Variation Database (База данных идеографических вариантов Юникода). Параметры сортировки с учетом знаков выбора варианта (_VSS) не поддерживаются в полнотекстовых индексах. Полнотекстовые индексы поддерживают только параметры с учетом диакритических знаков (_AS), типа японской азбуки (_KS) и ширины символов (_WS). Подсистемы CLR и XML в SQL Server не поддерживают знаки выбора варианта (_VSS). |
Двоичный (_BIN) 1 | Данные в SQL Server сортируются и сравниваются на основе битовых шаблонов, определенных для каждого символа. Двоичный порядок сортировки учитывает регистр и диакритические знаки. Двоичный порядок сортировки является самым быстрым. Дополнительные сведения см. в разделе Параметры двоичной сортировки в этой статье. |
Элемент двоичного кода (_BIN2) 1 | Данные в SQL Server сортируются и сравниваются на основе элементов Юникода для данных в Юникоде. Для типов данных не в Юникоде при выборе BIN2 сравнение производится так же, как и двоичная сортировка. Преимуществом использования порядка сортировки BIN2 является то, что приложениям, сравнивающим отсортированные данные SQL Server, не требуется никакой повторной сортировки данных. В результате сортировка BIN2 упрощает разработку приложения и увеличивает ожидаемую производительность. Дополнительные сведения см. в разделе Параметры двоичной сортировки в этой статье. |
UTF-8 (_UTF8) | Позволяет хранить данные в кодировке UTF-8 в SQL Server. Если этот параметр не выбран, SQL Server использует формат кодировки по умолчанию (не в Юникоде) для подходящих типов данных. Дополнительные сведения см. в разделе Поддержка UTF-8 в этой статье. |
1 Если выбран порядок сортировки BIN или BIN2, параметры с учетом регистра (_CS), диакритических знаков (_AS), типа японской азбуки (_KS) и ширины символов (_WS) недоступны.
Примеры параметров сортировки
Каждый набор параметров сортировки представляет собой последовательность суффиксов для определения учета регистра, диакритических знаков, ширины символов и типа японской азбуки. В следующих примерах описан порядок сортировки для различных сочетаний суффиксов.
Суффикс параметров сортировки Windows | Описание порядка сортировки |
---|---|
_BIN 1 | Двоичная сортировка |
_BIN2 1, 2 | Порядок сортировки элементов двоичного кода |
_CI_AI 2 | Без учета регистра, без учета диакритических знаков, без учета типа японской азбуки, без учета ширины символов |
_CI_AI_KS 2 | Без учета регистра, без учета диакритических знаков, с учетом типа японской азбуки, без учета ширины символов |
_CI_AI_KS_WS 2 | Без учета регистра, без учета диакритических знаков, с учетом типа японской азбуки, с учетом ширины символов |
_CI_AI_WS 2 | Без учета регистра, без учета диакритических знаков, без учета типа японской азбуки, с учетом ширины символов |
_CI_AS 2 | Без учета регистра, с учетом диакритических знаков, без учета типа японской азбуки, без учета ширины символов |
_CI_AS_KS 2 | Без учета регистра, с учетом диакритических знаков, с учетом типа японской азбуки, без учета ширины символов |
_CI_AS_KS_WS 2 | Без учета регистра, с учетом диакритических знаков, с учетом типа японской азбуки, с учетом ширины символов |
_CI_AS_WS 2 | Без учета регистра, с учетом диакритических знаков, без учета типа японской азбуки, с учетом ширины символов |
_CS_AI 2 | С учетом регистра, без учета диакритических знаков, без учета типа японской азбуки, без учета ширины символов |
_CS_AI_KS 2 | С учетом регистра, без учета диакритических знаков, с учетом типа японской азбуки, без учета ширины символов |
_CS_AI_KS_WS 2 | С учетом регистра, без учета диакритических знаков, с учетом типа японской азбуки, с учетом ширины символов |
_CS_AI_WS 2 | С учетом регистра, без учета диакритических знаков, без учета типа японской азбуки, с учетом ширины символов |
_CS_AS 2 | С учетом регистра, с учетом диакритических знаков, без учета типа японской азбуки, без учета ширины символов |
_CS_AS_KS 2 | С учетом регистра, с учетом диакритических знаков, с учетом типа японской азбуки, без учета ширины символов |
_CS_AS_KS_WS 2 | С учетом регистра, с учетом диакритических знаков, с учетом типа японской азбуки, с учетом ширины символов |
_CS_AS_WS 2 | С учетом регистра, с учетом диакритических знаков, без учета типа японской азбуки, с учетом ширины символов |
1 Если выбран порядок сортировки BIN или BIN2, параметры с учетом регистра (_CS), диакритических знаков (_AS), типа японской азбуки (_KS) и ширины символов (_WS) недоступны.
2 Добавление параметра UTF-8 (_UTF8) позволяет кодировать данные в Юникоде с использованием UTF-8. Дополнительные сведения см. в разделе Поддержка UTF-8 в этой статье.
Наборы параметров сортировки
SQL Server поддерживает следующие наборы параметров сортировки:
Параметры сортировки Windows
Параметры сортировки Windows определяют правила хранения символьных данных на основе соответствующего языкового стандарта системы Windows. Для параметров сортировки Windows сравнение данных в формате, отличном от Юникода, можно реализовать с помощью такого же алгоритма, как и для данных в Юникоде. Базовые правила параметров сортировки Windows задают алфавит или язык, используемый при сортировке по словарю. Кроме того, они определяют кодовую страницу, используемую для хранения символьных данных не в Юникоде. Сортировка в Юникоде и в других форматах совместима со строковым сравнением в соответствующей версии Windows. Тем самым обеспечивается согласованность обработки различных типов данных в SQL Server, а разработчики получают возможность сортировать строки в приложениях по тем же правилам, что и в SQL Server. Дополнительные сведения см. в статье Имя параметров сортировки Windows (Transact-SQL).
Параметры двоичной сортировки
При двоичных параметрах сортировки данные сортируются на основе последовательности закодированных значений, определяемых локалью и типом данных. Эти параметры учитывают регистр. Параметры двоичной сортировки в SQL Server определяют используемый языковой стандарт и кодовую страницу ANSI. При этом принудительно реализуется двоичный порядок сортировки. По причине своей относительной простоты параметры двоичной сортировки помогают повысить производительность приложений. Для типов данных не в Юникоде сравнение данных производится на основе кодовых точек, определенных в кодовой странице ANSI. Типы данных в Юникоде сравниваются на основе элементов кода Юникода. Для параметров двоичной сортировки на основе типов данных Юникода при сортировке данных языковой стандарт не учитывается. Например, параметры сортировки Latin_1_General_BIN и Japanese_BIN дают одинаковые результаты сортировки, если используются с данными в Юникоде. Дополнительные сведения см. в статье Имя параметров сортировки Windows (Transact-SQL).
В SQL Server имеются два типа параметров двоичной сортировки.
Прежние параметры двоичной сортировки BIN, которые выполняли неполное сравнение кодовых точек для данных в Юникоде. Эти параметры двоичной сортировки сравнивали первые символы как тип данных WCHAR, а затем следовало побитовое сравнение. При использовании параметров сортировки BIN только первый символ сортируется в соответствии с кодовой точкой. Остальные символы сортируются в соответствии с их значениями байта.
Новые параметры сортировки BIN2, которые выполняют сравнение исключительно кодовых точек. При использовании параметров сортировки BIN2 все символы сортируются в соответствии с их кодовыми точками. Так как платформа Intel не всегда является архитектурой по порядку следования байтов, символы кода Unicode всегда хранятся с перестановкой байтов.
Параметры сортировки SQL Server
Параметры сортировки SQL Server (SQL_*) имеют обратную совместимость с более ранними версиями SQL Server, с точки зрения порядка сортировки. Правила сортировки словаря для данных в формате, отличном от Юникода, не совместимы ни с какими подпрограммами сортировки операционных систем Windows. Однако сортировка данных в Юникоде совместима с правилами сортировки определенной версии Windows. Так как параметры сортировки SQL Server применяют для данных в Юникоде и других форматах разные правила сравнения, при сравнении одних и тех же данных получаются разные результаты, которые зависят от базового типа данных. Дополнительные сведения см. в статье Имя параметров сортировки SQL Server (Transact-SQL).
Во время установки SQL Server параметры сортировки по умолчанию определяются языковым стандартом операционной системы. Параметры сортировки уровня сервера можно изменить в процессе установки. Кроме того, их можно изменить, сменив языковой стандарт ОС перед установкой. В целях обратной совместимости для параметров сортировки по умолчанию устанавливается самая старая доступная версия, связанная с определенным языковым стандартом. В связи с этим данные параметры сортировки рекомендуется использовать не во всех случаях. Для использования всех возможностей SQL Server следует изменить параметры установки по умолчанию для параметров сортировки Windows. Например, для языкового стандарта ОС «Английский (США)» (кодовая страница 1252) параметры сортировки по умолчанию во время установки — SQL_Latin1_General_CP1_CI_AS. Их можно изменить на ближайший аналог в Windows Latin1_General_100_CI_AS_SC.
При обновлении англоязычной версии экземпляра SQL Server можно задать параметры сортировки SQL Server (SQL_*), чтобы обеспечить совместимость с существующими экземплярами SQL Server. Так как для экземпляра SQL Server параметры сортировки по умолчанию определяются во время установки, очень важно правильно настроить параметры сортировки в следующих случаях:
Уровни параметров сортировки
Настройка параметров сортировки поддерживается на следующих уровнях экземпляра SQL Server.
Параметры сортировки уровня сервера
Параметры сортировки сервера по умолчанию определяются в процессе установки SQL Server и становятся параметрами сортировки по умолчанию для системных баз данных и всех пользовательских баз данных.
В приведенной ниже таблице представлены параметры сортировки по умолчанию, определяемые языковым стандартом операционной системы (ОС), включая коды языков (LCID) в Windows и SQL.
Локаль Windows | Код языка в Windows | Код языка SQL | Параметры сортировки по умолчанию |
---|---|---|---|
Африкаанс (Южная Африка) | 0x0436 | 0x0409 | Latin1_General_CI_AS |
Албанский (Албания) | 0x041c | 0x041c | Albanian_CI_AS |
Эльзасский (Франция) | 0x0484 | 0x0409 | Latin1_General_CI_AS |
Амхарик (Эфиопия) | 0x045e | 0x0409 | Latin1_General_CI_AS |
Арабский (Алжир) | 0x1401 | 0x0401 | Arabic_CI_AS |
Арабский (Бахрейн) | 0x3c01 | 0x0401 | Arabic_CI_AS |
Арабский (Египет) | 0x0c01 | 0x0401 | Arabic_CI_AS |
Арабский (Ирак) | 0x0801 | 0x0401 | Arabic_CI_AS |
Арабский (Иордания) | 0x2c01 | 0x0401 | Arabic_CI_AS |
Арабский (Кувейт) | 0x3401 | 0x0401 | Arabic_CI_AS |
Арабский (Ливан) | 0x3001 | 0x0401 | Arabic_CI_AS |
Арабский (Ливия) | 0x1001 | 0x0401 | Arabic_CI_AS |
Арабский (Марокко) | 0x1801 | 0x0401 | Arabic_CI_AS |
Арабский (Оман) | 0x2001 | 0x0401 | Arabic_CI_AS |
Арабский (Катар) | 0x4001 | 0x0401 | Arabic_CI_AS |
Арабский (Саудовская Аравия) | 0x0401 | 0x0401 | Arabic_CI_AS |
Арабский (Сирия) | 0x2801 | 0x0401 | Arabic_CI_AS |
Арабский (Тунис) | 0x1c01 | 0x0401 | Arabic_CI_AS |
Арабский (ОАЭ) | 0x3801 | 0x0401 | Arabic_CI_AS |
Арабский (Йемен) | 0x2401 | 0x0401 | Arabic_CI_AS |
Армянский (Армения) | 0x042b | 0x0419 | Latin1_General_CI_AS |
Ассамский (Индия) | 0x044d | 0x044d | Недоступен на уровне сервера |
Азербайджанский (Азербайджан, кириллица) | 0x082c | 0x082c | Является нерекомендуемым и недоступен на уровне сервера |
Азербайджанский (Азербайджан, латиница) | 0x042c | 0x042c | Является нерекомендуемым и недоступен на уровне сервера |
Башкирский (Россия) | 0x046d | 0x046d | Latin1_General_CI_AI |
Баскский | 0x042d | 0x0409 | Latin1_General_CI_AS |
Белорусский (Беларусь) | 0x0423 | 0x0419 | Cyrillic_General_CI_AS |
Бенгальский (Бангладеш) | 0x0845 | 0x0445 | Недоступен на уровне сервера |
Bengali (India) | 0x0445 | 0x0439 | Недоступен на уровне сервера |
Боснийский (Босния и Герцеговина, кириллица) | 0x201a | 0x201a | Latin1_General_CI_AI |
Боснийский (Босния и Герцеговина, латиница) | 0x141a | 0x141a | Latin1_General_CI_AI |
Бретонский (Франция) | 0x047e | 0x047e | Latin1_General_CI_AI |
Болгарский (Болгария) | 0x0402 | 0x0419 | Cyrillic_General_CI_AS |
Catalan (Catalan) | 0x0403 | 0x0409 | Latin1_General_CI_AS |
Китайский (Гонконг, КНР) | 0x0c04 | 0x0404 | Chinese_Taiwan_Stroke_CI_AS |
Chinese (Macao SAR) | 0x1404 | 0x1404 | Latin1_General_CI_AI |
Китайский (Макау) | 0x21404 | 0x21404 | Latin1_General_CI_AI |
Китайский (КНР) | 0x0804 | 0x0804 | Chinese_PRC_CI_AS |
Китайский (КНР) | 0x20804 | 0x20804 | Chinese_PRC_Stroke_CI_AS |
Chinese (Singapore) | 0x1004 | 0x0804 | Chinese_PRC_CI_AS |
Chinese (Singapore) | 0x21004 | 0x20804 | Chinese_PRC_Stroke_CI_AS |
Китайский (Тайвань) | 0x30404 | 0x30404 | Chinese_Taiwan_Bopomofo_CI_AS |
Китайский (Тайвань) | 0x0404 | 0x0404 | Chinese_Taiwan_Stroke_CI_AS |
Корсиканский (Франция) | 0x0483 | 0x0483 | Latin1_General_CI_AI |
Хорватский (Босния и Герцеговина, латиница) | 0x101a | 0x041a | Croatian_CI_AS |
Хорватский (Хорватия) | 0x041a | 0x041a | Croatian_CI_AS |
Чешский (Чешская Республика) | 0x0405 | 0x0405 | Czech_CI_AS |
Датский (Дания) | 0x0406 | 0x0406 | Danish_Norwegian_CI_AS |
Дари (Афганистан) | 0x048c | 0x048c | Latin1_General_CI_AI |
Мальдивский (Мальдивы) | 0x0465 | 0x0465 | Недоступен на уровне сервера |
Нидерландский (Бельгия) | 0x0813 | 0x0409 | Latin1_General_CI_AS |
Нидерландский (Нидерланды) | 0x0413 | 0x0409 | Latin1_General_CI_AS |
Английский (Австралия) | 0x0c09 | 0x0409 | Latin1_General_CI_AS |
Английский (Белиз) | 0x2809 | 0x0409 | Latin1_General_CI_AS |
Английский (Канада) | 0x1009 | 0x0409 | Latin1_General_CI_AS |
Английский (Карибский бассейн) | 0x2409 | 0x0409 | Latin1_General_CI_AS |
Английский (Индия) | 0x4009 | 0x0409 | Latin1_General_CI_AS |
Английский (Ирландия) | 0x1809 | 0x0409 | Latin1_General_CI_AS |
Английский (Ямайка) | 0x2009 | 0x0409 | Latin1_General_CI_AS |
Английский (Малайзия) | 0x4409 | 0x0409 | Latin1_General_CI_AS |
Английский (Новая Зеландия) | 0x1409 | 0x0409 | Latin1_General_CI_AS |
Английский (Филиппины) | 0x3409 | 0x0409 | Latin1_General_CI_AS |
Английский (Сингапур) | 0x4809 | 0x0409 | Latin1_General_CI_AS |
Английский (Южная Африка) | 0x1c09 | 0x0409 | Latin1_General_CI_AS |
Английский (Тринидад и Тобаго) | 0x2c09 | 0x0409 | Latin1_General_CI_AS |
Английский (Великобритания) | 0x0809 | 0x0409 | Latin1_General_CI_AS |
Английский (США) | 0x0409 | 0x0409 | SQL_Latin1_General_CP1_CI_AS |
Английский (Зимбабве) | 0x3009 | 0x0409 | Latin1_General_CI_AS |
Эстонский (Эстония) | 0x0425 | 0x0425 | Estonian_CI_AS |
Фарерский (Фарерские острова) | 0x0438 | 0x0409 | Latin1_General_CI_AS |
Филиппинский (Филиппины) | 0x0464 | 0x0409 | Latin1_General_CI_AS |
Финский (Финляндия) | 0x040b | 0x040b | Finnish_Swedish_CI_AS |
Французский (Бельгия) | 0x080c | 0x040c | French_CI_AS |
Французский (Канада) | 0x0c0c | 0x040c | French_CI_AS |
Французский (Франция) | 0x040c | 0x040c | French_CI_AS |
Французский (Люксембург) | 0x140c | 0x040c | French_CI_AS |
Французский (Монако) | 0x180c | 0x040c | French_CI_AS |
Французский (Швейцария) | 0x100c | 0x040c | French_CI_AS |
Фризский (Нидерланды) | 0x0462 | 0x0462 | Latin1_General_CI_AI |
Галисийский | 0x0456 | 0x0409 | Latin1_General_CI_AS |
Грузинский (Грузия) | 0x10437 | 0x10437 | Georgian_Modern_Sort_CI_AS |
Грузинский (Грузия) | 0x0437 | 0x0419 | Latin1_General_CI_AS |
Немецкий (сортировка телефонной книги) | 0x10407 | 0x10407 | German_PhoneBook_CI_AS |
Немецкий (Австрия) | 0x0c07 | 0x0409 | Latin1_General_CI_AS |
Немецкий (Германия) | 0x0407 | 0x0409 | Latin1_General_CI_AS |
Немецкий (Лихтенштейн) | 0x1407 | 0x0409 | Latin1_General_CI_AS |
Немецкий (Люксембург) | 0x1007 | 0x0409 | Latin1_General_CI_AS |
Немецкий (Швейцария) | 0x0807 | 0x0409 | Latin1_General_CI_AS |
Греческий (Греция) | 0x0408 | 0x0408 | Greek_CI_AS |
Гренландский (Гренландия) | 0x046f | 0x0406 | Danish_Norwegian_CI_AS |
Гуджарати (Индия) | 0x0447 | 0x0439 | Недоступен на уровне сервера |
Хауса (Нигерия, латиница) | 0x0468 | 0x0409 | Latin1_General_CI_AS |
Иврит (Израиль) | 0x040d | 0x040d | Hebrew_CI_AS |
Хинди (Индия) | 0x0439 | 0x0439 | Недоступен на уровне сервера |
Венгерский (Венгрия) | 0x040e | 0x040e | Hungarian_CI_AS |
Венгерский (техническая сортировка) | 0x1040e | 0x1040e | Hungarian_Technical_CI_AS |
Исландский (Исландия) | 0x040f | 0x040f | Icelandic_CI_AS |
Игбо (Нигерия) | 0x0470 | 0x0409 | Latin1_General_CI_AS |
Индонезийский (Индонезия) | 0x0421 | 0x0409 | Latin1_General_CI_AS |
Инуитский (Канада, латиница) | 0x085d | 0x0409 | Latin1_General_CI_AS |
Инуитский (Канада) | 0x045d | 0x045d | Latin1_General_CI_AI |
Ирландский (Ирландия) | 0x083c | 0x0409 | Latin1_General_CI_AS |
Итальянский (Италия) | 0x0410 | 0x0409 | Latin1_General_CI_AS |
Итальянский (Швейцария) | 0x0810 | 0x0409 | Latin1_General_CI_AS |
Японский (Япония) | 0x0411 | 0x0411 | Japanese_CI_AS |
Японский (Япония) | 0x040411 | 0x40411 | Latin1_General_CI_AI |
Каннада (Индия) | 0x044b | 0x0439 | Недоступен на уровне сервера |
Казахский (Казахстан) | 0x043f | 0x043f | Kazakh_90_CI_AS |
Кхмерский (Камбоджа) | 0x0453 | 0x0453 | Недоступен на уровне сервера |
Киче (Гватемала) | 0x0486 | 0x0c0a | Modern_Spanish_CI_AS |
Киньяруанда (Руанда) | 0x0487 | 0x0409 | Latin1_General_CI_AS |
Конкани (Индия) | 0x0457 | 0x0439 | Недоступен на уровне сервера |
Корейский (Корея, словарная сортировка) | 0x0412 | 0x0412 | Korean_Wansung_CI_AS |
Киргизский (Киргизия) | 0x0440 | 0x0419 | Cyrillic_General_CI_AS |
Лаосский (Лаосская Народно-Демократическая Республика) | 0x0454 | 0x0454 | Недоступен на уровне сервера |
Латышский (Латвия) | 0x0426 | 0x0426 | Latvian_CI_AS |
Литовский (Литва) | 0x0427 | 0x0427 | Lithuanian_CI_AS |
Нижний Сорбский (Германия) | 0x082e | 0x0409 | Latin1_General_CI_AS |
Люксембургский (Люксембург) | 0x046e | 0x0409 | Latin1_General_CI_AS |
Северная Македония | 0x042f | 0x042f | Macedonian_FYROM_90_CI_AS |
Малайский (Бруней-Даруссалам) | 0x083e | 0x0409 | Latin1_General_CI_AS |
Малайский (Малайзия) | 0x043e | 0x0409 | Latin1_General_CI_AS |
Малайялам (Индия) | 0x044c | 0x0439 | Недоступен на уровне сервера |
Мальтийский (Мальта) | 0x043a | 0x043a | Latin1_General_CI_AI |
Маорийский (Новая Зеландия) | 0x0481 | 0x0481 | Latin1_General_CI_AI |
Мапудунгун (Чили) | 0x047a | 0x047a | Latin1_General_CI_AI |
Маратхи (Индия) | 0x044e | 0x0439 | Недоступен на уровне сервера |
Могавк (Канада) | 0x047c | 0x047c | Latin1_General_CI_AI |
Монгольский (Монголия) | 0x0450 | 0x0419 | Cyrillic_General_CI_AS |
Монгольский (КНР) | 0x0850 | 0x0419 | Cyrillic_General_CI_AS |
Непальский (Непал) | 0x0461 | 0x0461 | Недоступен на уровне сервера |
Норвежский (букмол, Норвегия) | 0x0414 | 0x0414 | Latin1_General_CI_AI |
Норвежский (нюнорск/ландсмол, Норвегия) | 0x0814 | 0x0414 | Latin1_General_CI_AI |
Окситанский (Франция) | 0x0482 | 0x040c | French_CI_AS |
Ория (Индия) | 0x0448 | 0x0439 | Недоступен на уровне сервера |
Пушту (Афганистан) | 0x0463 | 0x0463 | Недоступен на уровне сервера |
Персидский (Иран) | 0x0429 | 0x0429 | Latin1_General_CI_AI |
Польский (Польша) | 0x0415 | 0x0415 | Polish_CI_AS |
Португальский (Бразилия) | 0x0416 | 0x0409 | Latin1_General_CI_AS |
Португальский (Португалия) | 0x0816 | 0x0409 | Latin1_General_CI_AS |
Панджабский (Индия) | 0x0446 | 0x0439 | Недоступен на уровне сервера |
Кечуа (Боливия) | 0x046b | 0x0409 | Latin1_General_CI_AS |
Кечуа (Эквадор) | 0x086b | 0x0409 | Latin1_General_CI_AS |
Кечуа (Перу) | 0x0c6b | 0x0409 | Latin1_General_CI_AS |
Румынский (Румыния) | 0x0418 | 0x0418 | Romanian_CI_AS |
Романш (Швейцария) | 0x0417 | 0x0417 | Latin1_General_CI_AI |
Русский (Россия) | 0x0419 | 0x0419 | Cyrillic_General_CI_AS |
Саха (Россия) | 0x0485 | 0x0485 | Latin1_General_CI_AI |
Саамский (Инари, Финляндия) | 0x243b | 0x083b | Latin1_General_CI_AI |
Саамский (Луле, Норвегия) | 0x103b | 0x043b | Latin1_General_CI_AI |
Саамский (Луле, Швеция) | 0x143b | 0x083b | Latin1_General_CI_AI |
Саамский (Северный, Финляндия) | 0x0c3b | 0x083b | Latin1_General_CI_AI |
Саамский (Северный, Норвегия) | 0x043b | 0x043b | Latin1_General_CI_AI |
Саамский (Северный, Швеция) | 0x083b | 0x083b | Latin1_General_CI_AI |
Саамский (Скольт, Финляндия) | 0x203b | 0x083b | Latin1_General_CI_AI |
Саамский (Южный, Норвегия) | 0x183b | 0x043b | Latin1_General_CI_AI |
Саамский (Южный, Швеция) | 0x1c3b | 0x083b | Latin1_General_CI_AI |
Санскрит (Индия) | 0x044f | 0x0439 | Недоступен на уровне сервера |
Сербский (Босния и Герцеговина, кириллица) | 0x1c1a | 0x0c1a | Latin1_General_CI_AI |
Сербский (Босния и Герцеговина, латиница) | 0x181a | 0x081a | Latin1_General_CI_AI |
Сербский (Сербия, кириллица) | 0x0c1a | 0x0c1a | Latin1_General_CI_AI |
Сербский (Сербия, латиница) | 0x081a | 0x081a | Latin1_General_CI_AI |
Сесуто са Лебоа/Северный Суто (Южная Африка) | 0x046c | 0x0409 | Latin1_General_CI_AS |
Сетсвана/Тсвана (Южная Африка) | 0x0432 | 0x0409 | Latin1_General_CI_AS |
Синхала (Шри-Ланка) | 0x045b | 0x0439 | Недоступен на уровне сервера |
Словацкий (Словакия) | 0x041b | 0x041b | Slovak_CI_AS |
Словенский (Словения) | 0x0424 | 0x0424 | Slovenian_CI_AS |
Испанский (Аргентина) | 0x2c0a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Боливия) | 0x400a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Чили) | 0x340a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Колумбия) | 0x240a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Коста-Рика) | 0x140a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Доминиканская Республика) | 0x1c0a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Эквадор) | 0x300a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Эль-Сальвадор) | 0x440a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Гватемала) | 0x100a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Гондурас) | 0x480a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Мексика) | 0x080a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Никарагуа) | 0x4c0a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Панама) | 0x180a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Парагвай) | 0x3c0a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Перу) | 0x280a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Пуэрто-Рико) | 0x500a | 0x0c0a | Modern_Spanish_CI_AS |
испанский (Испания) | 0x0c0a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Испания, традиционная сортировка) | 0x040a | 0x040a | Traditional_Spanish_CI_AS |
Испанский (США) | 0x540a | 0x0409 | Latin1_General_CI_AS |
Испанский (Уругвай) | 0x380a | 0x0c0a | Modern_Spanish_CI_AS |
Испанский (Венесуэла) | 0x200a | 0x0c0a | Modern_Spanish_CI_AS |
Суахили (Кения) | 0x0441 | 0x0409 | Latin1_General_CI_AS |
Шведский (Финляндия) | 0x081d | 0x040b | Finnish_Swedish_CI_AS |
Шведский (Швеция) | 0x041d | 0x040b | Finnish_Swedish_CI_AS |
Сирийский (Сирия) | 0x045a | 0x045a | Недоступен на уровне сервера |
Таджикский (Таджикистан) | 0x0428 | 0x0419 | Cyrillic_General_CI_AS |
Тамазихт (Алжир, латиница) | 0x085f | 0x085f | Latin1_General_CI_AI |
Тамильский (Индия) | 0x0449 | 0x0439 | Недоступен на уровне сервера |
Татарский (Россия) | 0x0444 | 0x0444 | Cyrillic_General_CI_AS |
Телугу (Индия) | 0x044a | 0x0439 | Недоступен на уровне сервера |
Тайский (Таиланд) | 0x041e | 0x041e | Thai_CI_AS |
Тибетский (КНР) | 0x0451 | 0x0451 | Недоступен на уровне сервера |
Турецкий (Турция) | 0x041f | 0x041f | Turkish_CI_AS |
Туркменский (Туркменистан) | 0x0442 | 0x0442 | Latin1_General_CI_AI |
Уйгурский (КНР) | 0x0480 | 0x0480 | Latin1_General_CI_AI |
Украинский (Украина) | 0x0422 | 0x0422 | Ukrainian_CI_AS |
Верхний Сорбский (Германия) | 0x042e | 0x042e | Latin1_General_CI_AI |
Урду (Пакистан) | 0x0420 | 0x0420 | Latin1_General_CI_AI |
Узбекский (Узбекистан, кириллица) | 0x0843 | 0x0419 | Cyrillic_General_CI_AS |
Узбекский (Узбекистан, латиница) | 0x0443 | 0x0443 | Uzbek_Latin_90_CI_AS |
Вьетнамский (Вьетнам) | 0x042a | 0x042a | Vietnamese_CI_AS |
Валлийский (Великобритания) | 0x0452 | 0x0452 | Latin1_General_CI_AI |
Волоф (Сенегал) | 0x0488 | 0x040c | French_CI_AS |
Коса/исиКоса (Южная Африка) | 0x0434 | 0x0409 | Latin1_General_CI_AS |
Носу (КНР) | 0x0478 | 0x0409 | Latin1_General_CI_AS |
Йоруба (Нигерия) | 0x046a | 0x0409 | Latin1_General_CI_AS |
Зулу/исиЗулу (Южная Африка) | 0x0435 | 0x0409 | Latin1_General_CI_AS |
После назначения параметров сортировки серверу изменить их можно только путем экспорта всех данных и объектов базы данных, перестроения базы данных master и последующего импорта всех объектов и данных базы данных. Вместо изменения параметров сортировки по умолчанию для экземпляра SQL Serverможно задать желаемые параметры сортировки при создании новой базы данных или столбца базы данных.
Запрос всех доступных на сервере параметров сортировки выполняется с помощью следующей встроенной функции fn_helpcollations() :
Параметры сортировки уровня базы данных
Изменить параметры сортировки системных баз данных можно только путем изменения параметров сортировки сервера.
После создания базы данных в База данных SQL Azure параметры сортировки изменить невозможно.
Параметры сортировки пользовательской базы данных можно изменить с помощью инструкции ALTER DATABASE следующим образом: