ОБЛАСТЬ ПРИМЕНЕНИЯ:
SQL Server
База данных SQL Azure (только управляемый экземпляр)
Azure Synapse Analytics (хранилище данных SQL)
Parallel Data Warehouse APPLIES TO:
SQL Server
Azure SQL Database (Managed Instance only)
Azure Synapse Analytics (SQL DW)
Parallel Data Warehouse
Параметры сортировки сервера применяются по умолчанию для всех установленных системных баз данных с экземпляром SQL Server SQL Server , а также для новых пользовательских баз данных. The server collation acts as the default collation for all system databases that are installed with the instance of SQL Server SQL Server , and also any newly created user databases. Необходимо тщательно выбрать параметры сортировки уровня сервера, так как они влияют на следующее. You should carefully choose server-level collation because it affects:
- Правила сортировки и сравнения в = , JOIN , ORDER BY и другие операторы сравнения текстовых данных. Sorting and comparison rules in = , JOIN , ORDER BY and other operators that compare textual data.
- Параметры сортировки столбцов CHAR , VARCHAR , NCHAR и NVARCHAR системных представлений, системных функций и объектов в базе данных TempDB (например, темпоральных таблиц). Collation of the CHAR , VARCHAR , NCHAR , and NVARCHAR columns in system views, system functions, and the objects in TempDB (for example, temporary tables).
- Имена переменных, курсоров и меток GOTO . Names of the variables, cursors, and GOTO labels. Переменные @pi и @PI считаются различными, если параметры сортировки уровня сервера заданы с учетом регистра, и одной и той же переменной, если параметры сортировки уровня сервера заданы без учета регистра. Variables @pi and @PI are considered as different variables if the server-level collation is case-sensitive, and the same variables if the server-level collation is case-insensitive.
Содержание
- Настройка параметров сортировки сервера в SQL Server Setting the server collation in SQL Server
- Изменение параметров сортировки сервера в SQL Server Changing the server collation in SQL Server
- Задание параметров сортировки сервера в управляемом экземпляре Setting the server collation in Managed Instance
Настройка параметров сортировки сервера в SQL Server Setting the server collation in SQL Server
Параметры сортировки сервера задаются во время установки SQL Server SQL Server . The server collation is specified during SQL Server SQL Server installation. Параметры сортировки по умолчанию — SQL_Latin1_General_CP1_CI_AS. Default server-level collation is SQL_Latin1_General_CP1_CI_AS. Параметры сортировки только для Юникода не могут быть заданы как параметры сортировки уровня сервера. Unicode-only collations cannot be specified as the server-level collation. Дополнительные сведения см. в статье Collation and Unicode Support. For more information, see Collation and Unicode Support.
Изменение параметров сортировки сервера в SQL Server Changing the server collation in SQL Server
Чтобы изменить параметры сортировки по умолчанию для экземпляра SQL Server SQL Server (эта операция может оказаться сложной), выполните следующие шаги: Changing the default collation for an instance of SQL Server SQL Server can be a complex operation and involves the following steps:
Проверьте наличие данных и скриптов, необходимых для повторного создания пользовательской базы данных и всех ее объектов. Make sure you have all the information or scripts needed to re-create your user databases and all the objects in them.
Экспортируйте все данные с помощью такого средства, как bcp Utility. Export all your data using a tool such as the bcp Utility. Дополнительные сведения см. в разделе Массовый импорт и экспорт данных (SQL Server). For more information, see Bulk Import and Export of Data (SQL Server).
Удалите все пользовательские базы данных. Drop all the user databases.
Перестройте базу данных master, указав новые параметры сортировки в свойстве SQLCOLLATION команды setup . Rebuild the master database specifying the new collation in the SQLCOLLATION property of the setup command. Пример: For example:
Дополнительные сведения см. в статье Перестроение системных баз данных. For more information, see Rebuild System Databases.
Создайте все базы данных и все их объекты. Create all the databases and all the objects in them.
Импортируйте все данные. Import all your data.
Вместо изменения параметров сортировки по умолчанию для всего экземпляра SQL Server SQL Server можно указывать параметры сортировки по умолчанию для каждой новой базы данных. Instead of changing the default collation of an instance of SQL Server SQL Server , you can specify a default collation for each new database you create.
Задание параметров сортировки сервера в управляемом экземпляре Setting the server collation in Managed Instance
Параметры сортировки на уровне сервера в Управляемом экземпляре SQL Azure можно указать при создании экземпляра и нельзя изменить позднее. Server-level collation in Azure SQL Managed Instance can be specified when the instance is created and cannot be changed later. Параметры сортировки на уровне сервера можно настроить на портале Azure или с помощью PowerShell и шаблона Resource Manager во время создания экземпляра. You can set server-level collation via Azure portal or PowerShell and Resource Manager template while you are creating the instance. Параметры сортировки по умолчанию — SQL_Latin1_General_CP1_CI_AS. Default server-level collation is SQL_Latin1_General_CP1_CI_AS. Параметры сортировки только для Юникода и новые параметры сортировки UTF-8 не могут быть заданы как параметры сортировки уровня сервера. Unicode-only and new UTF-8 collations cannot be specified as server-level collation. При миграции баз данных SQL Server на управляемый экземпляр проверьте параметры сортировки сервера в исходном SQL Server с помощью функции SERVERPROPERTY(N’Collation’) и создайте управляемый экземпляр, который соответствует параметрам сортировки SQL Server. If you are migrating databases from SQL Server to Managed Instance, check the server collation in the source SQL Server using SERVERPROPERTY(N’Collation’) function and create a Managed Instance that matches the collation of your SQL Server. Миграция базы данных из SQL Server в управляемый экземпляр с несоответствующими параметрами сортировки на уровне сервера может приводить к нескольким непредвиденным ошибкам в запросах. Migrating a database from SQL Server to Managed Instance with the server-level collations that are not matched might cause several unexpected errors in the queries. Изменить параметры сортировки уровня сервера у существующего управляемого экземпляра невозможно. You cannot change the server-level collation on the existing Managed Instance.
Настройка параметров сортировки и поддержка нескольких языков
Мы продолжаем публиковать в рассылке фрагменты перевода на русский язык Русской Электронной Документации по SQL Server 2005 (BOL). Оценить качество перевода Вы можете в форуме SQL.RU: Вышел русский СТР SQL Server 2005.
Microsoft SQL Server 2005 поддерживает все языки, доступные в операционных системах Microsoft Windows. В этом разделе представлены подробные сведения о языковой поддержке в SQL Server 2005, а также о способах поддержки форматов данных с кодировкой Юникод и отличной от Юникод в SQL Server.
Изменения параметров сортировки в SQL Server 2005
В SQL Server 2005 внесены следующие изменения и усовершенствования.
Поддержка новых и обновленных параметров сортировки Windows Server 2003 и Windows XP, включая параметры сортировки дальневосточных языков, поддерживающие дополнительные символы.
Поддержка новых параметров сортировки со сравнением строк дополнительных символов по элементам кода в SQL Server 2005.
Добавление двоичного флага BIN2 для полноценного сравнения элементов кода.
Усовершенствованный путь миграции от SQL Server 7.0 и SQL Server 2000 к SQL Server 2005.
Параметры сортировки Windows Hindi, Lithuanian_Classic и SQL_ALTDiction_CP1253_CS_AS SQL являются устаревшими. Эти параметры сортировки поддерживаются, но не отображаются во встроенной функции ::fn_helpcollations(). Поддержка этих параметров сортировки будет удалена из следующей версии SQL Server. Дополнительные сведения о правилах признания функций SQL Server устаревшими см. в разделе Обратная совместимость.
Дополнительные сведения см. в разделе Настройка параметров сортировки в программе установки
Терминология параметров сортировки
Чтобы воспользоваться всеми преимуществами языковой поддержки SQL Server 2005, следует ознакомиться с терминами, описанными в этом разделе.
Кодовая страница — это упорядоченный набор символов данного набора символов в котором числовой индекс или значение элемента кода связано с каждым символом. Кодовую страницу Microsoft Windows часто называют набором символов или кодировкой. Кодовые страницы обеспечивают поддержку наборов символов и раскладок клавиатуры, применяемых в различных языковых стандартах Windows.
См. также: Установка кодовой страницы клиента
Параметры сортировки задают битовые шаблоны, представляющие в наборе данных каждый символ. Кроме того, параметры сортировки определяют правила сортировки и сравнения данных. SQL Server 2005 поддерживает хранение объектов с различными параметрами сортировки в одной базе данных, и у каждого столбца в базе данных SQL Server может быть собственный набор параметров сортировки. Для столбцов в кодировке, отличной от Юникода, свойство параметров сортировки задает кодовую страницу для данных и, соответственно, возможность представления символов. Данные можно легко перемещать между столбцами в Юникоде. Данные между столбцами в форматах, отличных от Юникода, обычным образом перемещать нельзя, их следует преобразовывать с учетом текущей кодовой страницы.
Результат выполнения инструкции Transact-SQL может различаться в зависимости от контекста различных баз данных, в каждой из которых имеются свои параметры сортировки. Рекомендуется по возможности использовать стандартный набор параметров сортировки в рамках всей организации. Использование стандартных свойств параметров сортировки на всех компьютерах организации устраняет необходимость явно указывать параметры сортировки в каждом символьном выражении или выражении Юникода. Если необходимо работать с объектами, имеющими различные параметры сортировки и кодовые страницы, следует создавать запросы с учетом очередности параметров сортировки. Дополнительные сведения см. в разделе Очередность параметров сортировки (Transact-SQL).
Характеристики параметров сортировки учитывают язык, регистр, диакритические знаки, тип японской азбуки, а также ширину символов.
В параметры сортировки SQL Server 2005 входят следующие типы группирования:
Параметры сортировки Windows
Параметры сортировки Windows определяют правила хранения символьных данных на основе соответствующего языкового стандарта Windows. Для параметров сортировки Windows сравнение данных в формате, отличном от Юникода, реализовано с помощью такого же алгоритма, как и для данных в Юникоде. Базовые правила параметров сортировки Windows задают алфавит или язык, используемый при сортировке по словарю, а также кодовую страницу, используемую для хранения символьных данных не в Юникоде. Сортировка в Юникоде и в других форматах совместима со строковым сравнением в соответствующей версии Windows. Это обеспечивает согласованность типов данных в SQL Server, а также позволяет разработчикам сортировать строки в их приложениях с помощью тех же правил, что и в SQL Server, то есть путем вызова функции CompareStringW из Microsoft Win32 API. Дополнительные сведения см. в разделе Настройка параметров сортировки в программе установки.
Двоичные параметры сортировки
В двоичных параметрах сортировки данные сортируются на основе последовательности закодированных значений, определяемых языковым стандартом и типом данных. Двоичные параметры сортировки в SQL Server определяют языковой стандарт и используемую кодовую страницу ANSI, применяя двоичный порядок сортировки. Двоичные параметры сортировки полезно применять для повышения производительности приложений вследствие относительной простоты. Для типов данных, отличных от Юникода, сравнение данных производится на основе элементов кода, определенных кодовой страницей ANSI. Типы данных в Юникоде сравниваются на основе элементов кода Юникода. Для двоичных параметров сортировки на основе типов данных Юникода при сортировке данных языковой стандарт не учитывается. Например, параметры сортировки Latin_1_General_BIN и Japanese_BIN дают одинаковые результаты сортировки, если используются с данными в Юникоде.
Прежние двоичные параметры сортировки в SQL Server для данных в Юникоде выполняли неполное сравнение каждого элемента кода, при этом в предыдущей версии SQL Server первый символ сравнивался, как принадлежащий типу WCHAR, после чего производилось побайтовое сравнение. В целях обратной совместимости семантика существующих двоичных параметров сортировки изменена не будет.
Двоичные параметры сортировки в этом выпуске SQL Server включают новый набор параметров сортировки со сравнением исключительно элементов кода. Пользователям доступна возможность миграции на новые двоичные параметры сортировки для получения преимущества реального сравнении элементов кода. При разработке новых приложений рекомендуется использовать новые двоичные параметры сортировки. Новым суффиксом BIN2 определяются имена наборов параметров сортировки, реализующих новую семантику параметров сортировки элементов кода. Кроме того, добавлен новый флаг сравнения, соответствующий BIN2 для новой двоичной сортировки. Дополнительные сведения см. в разделе Использование двоичных параметров сортировки.
Параметры сортировки SQL Server
Параметры сортировки SQL Server обеспечивают совместимость порядка сортировки с более ранними версиями SQL Server. Параметры сортировки SQL Server основаны на традиционных порядках сортировки SQL Server для данных в формате, отличном от Юникода. Например для данных типов char и varchar, определенных в SQL Server. Правила сортировки словаря для данных в формате, отличном от Юникода, не совместимы ни с какими процедурами сортировки операционных систем Windows, однако сортировка данных в Юникоде совместима с правилами сортировки определенной версии Windows. Поскольку параметры сортировки SQL Server применяют для данных в Юникоде и в отличных от него форматах разные правила сортировки, то при сравнении одних и тех же данных могут получиться разные результаты, которые будут зависеть от базового типа данных. Дополнительные сведения см. в разделе Использование параметров сортировки SQL.
| Примечание. |
|---|
При обновлении версии экземпляра SQL Server можно задать параметры сортировки SQL Server, чтобы обеспечить совместимость с существующими экземплярами SQL Server. Поскольку параметры сортировки по умолчанию для экземпляра SQL Server определяются во время установки, очень важно правильно настроить параметры сортировки в следующих случаях:
- Когда код приложения каким-то образом зависит от поведения предыдущих параметров сортировки SQL Server.
- Планируется использование репликации SQL Server 2005 с уже установленными SQL Server 6.5 или SQL Server 7.0.
- Необходимо хранить символьные данные, в которых используется несколько языков.
SQL Server 2005 поддерживает настройку параметров сортировки на следующих уровнях экземпляра SQL Server 2005:
Параметры сортировки уровня сервера
Параметры сортировки по умолчанию для экземпляра SQL Server задаются во время установки. Параметры сортировки по умолчанию для экземпляра также становятся параметрами сортировки по умолчанию для системных баз данных: master, model, tempdb, msdb и distribution. После назначения параметров сортировки любому объекту, отличному от столбца или базы данных, его можно будет изменить только с помощью удаления и повторного создания объекта. Вместо изменения параметров сортировки по умолчанию для экземпляра SQL Server можно задать параметры сортировки при создании новой базы данных или столбца базы данных.
Запрос параметров сортировки сервера для экземпляра SQL Server выполняется с помощью следующей функции SERVERPROPERTY Transact-SQL:
Запрос всех доступных на сервере параметров сортировки выполняется с помощью следующей встроенной функции fn_helpcollations():
Параметры сортировки уровня базы данных
При создании базы данных можно задать ее параметры сортировки по умолчанию с помощью предложения COLLATE в инструкции CREATE DATABASE. Если при создании базы данных не были указаны параметры сортировки, то базе данных назначаются параметры сортировки по умолчанию для базы данных model. Параметры сортировки по умолчанию для базы данных model совпадают с параметрами сортировки по умолчанию для экземпляра SQL Server.
Параметры сортировки пользовательской базы данных можно изменить с помощью инструкции ALTER DATABASE следующим образом:
Текущие параметры сортировки базы данных можно получить с помощью следующей инструкции:
| Примечание. |
|---|
| Изменение параметров сортировки уровня базы данных не влияет на параметры сортировки уровня пользователя, таблицы и столбцов. |
При создании таблицы параметры сортировки для каждого столбца символьной строки можно указывать с помощью предложения COLLATE инструкции CREATE TABLE. Если при создании таблицы не были указаны параметры сортировки, то столбцу присваиваются параметры сортировки по умолчанию для базы данных.
Параметры сортировки для столбца можно изменить с помощью инструкции ALTER TABLE следующим образом:
Параметры сортировки уровня выражений
Параметры сортировки уровня выражения задаются при выполнении инструкции, и они влияют на способ возврата результирующего набора. Это позволяет сортировать результаты с помощью предложения ORDER BY с учетом специфики конкретного языка. Для реализации параметров сортировки уровня выражения предложение COLLATE применяется следующим образом:
Тип данных — это определение, которое указывает диапазон значений, операции, которые могут выполняться над значениями, а также способ хранения значений в памяти компьютера. Определение типов данных позволяет SQL Server предсказуемо управлять данными. char, varchar и text относятся к типам данных с символами в формате, отличном от Юникода. Типы данных в формате Юникод используют представление символов в формате Юникод. К ним относятся следующие типы: nchar, nvarchar и ntext. В приложениях рекомендуется использовать данные в Юникоде, особенно если данные хранятся на нескольких языках.
См. также: Типы данных (компонент Database Engine), Типы данных (Transact-SQL), Типы данных служб Integration Services
Глобализация — это процесс разработки приложения с функциями и кодом, поддерживающими несколько языков и языковых стандартов. В глобализованном приложении реализовано несколько языковых стандартов для языков, поддерживающих Юникод для ввода, обработки, отображения и вывода данных.
См. также: Вопросы международного использования SQL Server
Языковой стандарт — это набор сведений, связанный с определенным регионом или культурой — имя и идентификатор языка, шрифт, применяемый для записи на нем, а также национальные стандарты. SQL Server 2005 поддерживает все 135 языковых стандартов, поддерживаемых Windows XP. Среди них пять языковых стандартов для китайского языка (КНР, ОАР Гонконг, Макао, Сингапур и Тайвань), тринадцать стандартов для английского языка (Австралия, Белиз, Канада, Карибские о-ва, Ирландия, Ямайка, Новая Зеландия, Филиппины, ЮАР, Тринидад, Великобритания, США, Зимбабве), а также шесть стандартов для французского языка (Бельгия, Канада, Франция, Люксембург, Монако, Швейцария).
В приведенной ниже таблице показаны некоторые различия между четырьмя основными языковыми стандартами, поддерживаемыми Windows.
| Языковой стандарт | Английский (США) | Французский (Франция) | Японский | Объединенные Арабские Эмираты |
|---|---|---|---|---|
Страна или регион
Объединенные Арабские Эмираты
Кодовая страница, определяемая Windows
Размер страницы по умолчанию
Разделитель целой и дробной части
Разделитель элементов списка
Разделитель групп разрядов
Порядок чтения — это общее направление последовательности текста, которое относится к порядку слов, а не к порядку ввода символов. Например, если в качестве языка ввода используется арабский язык, то новые символы будут вводиться справа налево. Если язык ввода клавиатуры имеет латинский алфавит, то новые символы будут появляться слева направо.
Порядок сортировки устанавливает способ сортировки значений данных, что влияет на результаты сравнения данных. Сортировка данных выполняется с помощью параметров сортировки, и ее можно оптимизировать с помощью индексов.
См. также: Стили сортировки в параметрах сортировки Windows, Индексы
Юникод представляет алфавитные символы в двухбайтовом виде, что позволяет передавать символами кодировки Юникода почти все письменные языки мира. Юникод был разработан и в настоящее время поддерживается и продвигается некоммерческой организацией Unicode Consortium. Дополнительные сведения см. на веб-узле Unicode Consortium.
Данные на нескольких языках следует всегда хранить в Юникоде (nchar, nvarchar и ntext), а не использовать другие типы данных (char, varchar и text). Применение Юникода позволяет существенно повысить производительность, поскольку требуется выполнять меньше преобразований кодовых страниц. Типы данных, отличные от Юникода, имеют значительные ограничения, поскольку на компьютере, где не применяется Юникод, можно использовать только одну кодовую страницу. Чтобы получить полное представление о трудностях, связанных с применением Юникода или отличных от него типов данных, нужно протестировать свой сценарий, измерив разницу производительности для этих двух вариантов в конкретной среде. По меньшей мере, следует стандартизировать параметры сортировки в пределах офиса и по возможности развертывать серверы и клиенты с поддержкой Юникода.
В большинстве случаев экземпляр SQL Server будет взаимодействовать с другими серверами или клиентами и сможет применять несколько стандартов доступа к данным. Клиенты SQL Server бывают одного из двух основных типов:
- Клиенты с поддержкой Юникода, применяющие OLE DB и ODBC версии 3.7 или более поздних.
- Клиенты без поддержки Юникода, применяющие библиотеку баз данных и ODBC версий 3.6 или более ранних.
В следующей таблице приведены замечания по применению данных на нескольких языках с различными сочетаниями серверов, поддерживающих и не поддерживающих Юникод.
| Сервер | Клиент | Преимущества или ограничения |
|---|---|---|
Идеальная конфигурация, поскольку данные в Юникоде будут использоваться во всей системе. Этот сценарий обеспечивает наилучшую производительность и защиту полученных данных от повреждения. Это случай применения Microsoft ActiveX (ADO), OLE DB, а также ODBC версий 3.7 или более поздних.
В данном сценарии хранение данных не вызывает трудностей, но могут быть ограничения при переносе данных на компьютер клиента. По меньшей мере, данные в Юникоде придется преобразовывать для клиента без поддержки Юникода с помощью кодовой страницы.
Это не лучшая конфигурация для работы с данными на нескольких языках. Данные в Юникоде нельзя будет записывать на сервер без поддержки Юникода. Вероятнее всего, неполадки могут произойти при отправке данных на серверы, которые поддерживают другие кодовые страницы.
В этом сценарии очень много ограничений для применения данных на нескольких языках. Можно применять только одну кодовую страницу. Идеальная конфигурация — это сервер и клиенты с поддержкой Юникода.
См. также: Основы Юникода
© Корпорация Майкрософт, 2005. Все права защищены.
Настройка операционной системы и хранилища для SQL Server (продолжение)
Direct Attach Storage с технологией SCSI U320
2-8 встроенных диска под управлением интегрированного SCSI контроллера.
1-4 внешних дисковых массива (14-15 отсеков) с двухканальным SCSI контроллером.
4-7 диска на каждом канале внешнего хранилища, с общим количеством по 8-14 дисков на каждый массив.
Один PCI-X или PCI-Express двухканальный RAID контроллер на каждый модуль дискового массива хранилища.
Использование внутренних отсеков для дисков является рациональным решением, потому что это не влечёт дополнительных затрат, включая затраты на встроенный контроллер. Стоимость отдельного диска относительно невелика по сравнению с полной, амортизационной стоимостью внешнего хранилища, включающей стоимость дисков, внешнего корпуса хранилища и контроллера. Даже в кластерной конфигурации, в которой ресурсы кластера должны разделяться между серверами, никогда не будет лишним иметь дополнительную полосу пропускания за счёт локальных ресурсов сервера.
Рациональным решением для внешнего хранилища является следующее: каждый SCSI канал U320 с номинальной полосой пропускания 320 MB/sec фактически может иметь пропускную способность приблизительно в 240-260 MB/sec, при использовании больших блоков и дискового обмена последовательного типа. Потребуется три одновременно работающих диска, чтобы полностью загрузить один канал U320. На сегодняшний день довольно трудно получить максимальную производительность каждого из отдельных дисков или получить исключительно последовательный характер передачи данных. Внешние массивы обычно имеют не меньше семи отсеков под диски на один канал. Такая комбинация возможностей делает вариант с 4-7 дисками на один SCSI канал наиболее практичным. Внешние SCSI хранилища в корпусе высотой 3U поставляются с одним или двумя SCSI каналами. Распределение более семи дисков на канал может ограничить последовательную полосу пропускания, поэтому стоит избегать корпуса с единственным каналом, если требуется очень высокая скорость вращения на шпинделе, вследствие чего имеющаяся пропускная способность может оказаться недостаточной для обслуживания более 7 дисков на одном канале. Сегодня ещё можно встретить хранилища, использующие устаревшие технологии, так что старайтесь избегать приобретения массивов U160.
На рисунках ниже показано последовательное чтение с дисков и характеристики записи для современного поколения SCSI дисков 36GB 15К. В начале диска (со скоростью вращения шпинделя 15К) данные могут передаться со скоростью 90 MB/sec. Для внутренних секторов производительность составляет около 50 MB/sec. Размещение данных на диске может повлиять на производительность. Хорошей практикой является размещение наиболее критичных данных в начале каждого из дисков, в середине менее критичные данные и в конце резервные копии и вспомогательное хранилище.
Для рациональной конфигурации стоит выбирать RAID контроллеры с двумя или четырьмя каналами. PCI-X 64-bit шина с частотой 133MHz имеет номинальную полосу пропускания в 1 GB/sec, что должно соответствовать четырем U320 каналам, которые способны поддерживать приблизительно по 250 MB/sec каждый. Однако, не очевидно, что любой из четырёх каналов PCI-X SCSI контроллера сможет в действительности выдержать больше 500-600 MB/sec. Так что лучшим решением при выборе контроллеров являются двухканальные модели, для случаев, когда очень высокая скорость вращения шпинделей не потребует более производительных решений, чем двухканальные контроллеры.
ПРИМЕНЯЕТСЯ К:
SQL Server (начиная с 2008)
База данных SQL Azure
Хранилище данных SQL Azure
Parallel Data Warehouse
Очередность параметров сортировки, также называемая правилами приведения параметров сортировки, определяет следующее.
Параметры сортировки итоговых результатов выражения, возвращающего символьную строку.
Параметры сортировки, используемые теми операторами с учетом параметров сортировки, которые принимают в качестве параметра символьную строку, но не возвращают ее, например операторы LIKE и IN.
Правила очередности параметров сортировки применяются только к строковым типам данных: char, varchar, текст, nchar, nvarchar, и ntext. Объекты, содержащие данные других типов, не принимают участия в оценке параметров сортировки.
В следующей таблице перечислены и описаны четыре категории, в которых обозначены параметры сортировки для всех объектов. Имя каждой категории также называется меткой параметров сортировки.
| Метка параметров сортировки | Типы объектов |
|---|---|
| Приводимые по умолчанию | Любая переменная типа символьной строки языка Transact-SQL, параметр, литерал, выходное значение каталога встроенной функции или встроенная функция несимвольного аргумента, выходом которой является строка. |
Если объект объявлен внутри пользовательской функции, хранимой процедуры или триггера, то ему присваиваются параметры сортировки по умолчанию, принятые для базы данных, в которой указанная функция, хранимая процедура или триггер были созданы. Если объект объявлен внутри пакета, то ему присваиваются параметры сортировки по умолчанию, принятые для текущей базы данных для этого соединения.
Даже в том случае, когда параметры сортировки для столбца были явно заданы с помощью предложения COLLATE в инструкции CREATE TABLE или CREATE VIEW, ссылка на столбец рассматривается как неявная.
Меткой параметров сортировки простого выражения, ссылающегося на объект только одной символьной строки, является метка параметров сортировки этого объекта.
Меткой параметров сортировки сложного выражения, ссылающегося на выражения с двумя операндами с одинаковой меткой параметров сортировки, является метка этих выражений операндов.
Метка параметров сортировки для результата выполнения сложного выражения, ссылающегося на выражения с двумя операндами с разными метками параметров сортировки, основана на следующих правилах.
Явно указанные имеют приоритет над указанными неявно. Неявно указанные имеют приоритет над приводимыми по умолчанию:
Явные > Неявные > Приводимые по умолчанию
Объединение двух выражений, имеющих разные явно указанные параметры сортировки, приведет к ошибке:
Явные X + явные Y = ошибка
Объединение двух выражений, имеющих разные неявно указанные параметры сортировки, приведет к результату без параметров сортировки:
Неявные X + неявные Y = без параметров сортировки
Объединение выражения без параметров сортировки и выражения с любой меткой, кроме метки явно указанных параметров сортировки (см. следующее правило), приведет к результату с меткой без параметров сортировки:
Без параметров сортировки + любое = без параметров сортировки
Объединение выражения без параметров сортировки и выражения с меткой явно указанных параметров сортировки приведет к результату с меткой явно указанных параметров сортировки:
Без параметров сортировки + явные X = явные
Следующая таблица содержит сводку возможных значений.
| Метка приведения операнда | Явные X | Неявные X | Приводимые по умолчанию | Без параметров сортировки |
|---|---|---|---|---|
| Явные Y | Ошибка | Результат — «Явные Y» | Результат — «Явные Y» | Результат — «Явные Y» |
| Неявные Y | Результат — «Явные X» | Результат — «Без параметров сортировки» | Результат — «Неявные Y» | Результат — «Без параметров сортировки» |
| Приводимые по умолчанию | Результат — «Явные X» | Результат — «Неявные X» | Результат — «Приводимые по умолчанию» | Результат — «Без параметров сортировки» |
| Без параметров сортировки | Результат — «Явные X» | Результат — «Без параметров сортировки» | Результат — «Без параметров сортировки» | Результат — «Без параметров сортировки» |
Очередность параметров сортировки также подчиняется следующим дополнительным правилам.
Нельзя указать несколько предложений COLLATE для выражения с явно заданным параметром сортировки. Например, следующее предложение WHERE недопустимо, так как для выражения с уже явно указанным параметром сортировки применяется предложение COLLATE :
WHERE ColumnA = ( ‘abc’ COLLATE French_CI_AS) COLLATE French_CS_AS
Преобразование кодовой страницы для текст типы данных не допускаются. Не удается привести текст выражения из одного сопоставления в другой, если они имеют разные кодовые страницы. Нельзя пользоваться оператором присвоения для двух текстовых операндов, имеющих различные кодовые страницы в параметрах сортировки.
Очередность параметров сортировки определяется после преобразования типов данных. Параметры сортировки конечного результата могут быть от одного операнда, а тип конечного результата — от другого. Например, рассмотрим следующий пакет:
Тип данных Юникода для простого выражения N’abc’ имеет более высокую очередность. Поэтому результирующее выражение имеет тип данных Юникода, присвоенный строке N’abc’ . Однако для выражения CharCol задана метка Implicit (неявные параметры сортировки), а для выражения N’abc’ — метка Coercible-default (приводимые параметры сортировки по умолчанию) с более низкой очередностью. Поэтому применяются параметры сортировки French_CI_AS , заданные для CharCol .
Примеры правил параметров сортировки
В приведенных ниже примерах поясняется работа правил параметров сортировки. Чтобы запустить примеры, создайте следующую тестовую таблицу.
Конфликты и ошибки параметров сортировки
Предикат в приведенном ниже запросе приводит к конфликту параметров сортировки и вызывает ошибку.
Ниже приводится результирующий набор.
Сравнение меток «Явный» и «Неявный»
Предикату в приведенном ниже запросе назначаются параметры сортировки greek_ci_as , так как выражение справа имеет метку «Явный». Указанная метка имеет более высокую очередность, чем метка «Неявный» выражения слева.
Ниже приводится результирующий набор.
Метка «Без параметров сортировки»
Выражениям CASE приведенных ниже запросов присвоена метка «Без параметров сортировки», поэтому они не могут отображаться в списке выбора или обрабатываться операторами с учетом параметров сортировки. Подобные выражения могут обрабатываться операторами без учета параметров сортировки.
Ниже приводится результирующий набор.
Ниже приводится результирующий набор.
Ниже приводится результирующий набор.
Операторы и функции могут быть с учетом параметров сортировки и без учета.
С учетом параметров сортировки
Это означает, что указание операнда «Без параметров сортировки» вызывает ошибку при компиляции. Результат выражения не может быть «Без параметров сортировки».
Без учета параметров сортировки
Это означает, что операнд и результат могут быть «Без параметров сортировки».
Операторы и параметры сортировки
Операторы сравнения и операторы MAX, MIN, BETWEEN, LIKE, IN выполняются с учетом параметров сортировки. Строке, используемой операторами, присваивается метка параметров сортировки операнда с более высокой очередностью. Оператор UNION также выполняется с учетом параметров сортировки, а строковым операндам и конечному результату присваивается метка параметров сортировки наивысшей очередности. Очередность параметров сортировки операндов и результатов UNION вычисляется по столбцам.
Оператор присвоения выполняется без учета параметров сортировки, так как выражение справа приводится к параметрам сортировки выражения слева.
При выполнении операции конкатенации строк учитываются заданные параметры сортировки. Двум строковым операндам и результату назначается метка параметров сортировки операнда с самой высокой очередностью параметров сортировки. Операторы UNION ALL и CASE выполняются без учета параметров сортировки, а всем строковым операндам и конечному результату присваивается метка параметров сортировки наивысшей очередности. Очередность параметров сортировки операндов и результатов UNION ALL вычисляется по столбцам.
Функции и параметры сортировки
Функции CAST, CONVERT и COLLATE учитывают параметры сортировки для char, varchar, и текст типов данных. Если входными и выходными значениями функций CAST и CONVERT являются символьные строки, то выходной строке присваивается метка параметров сортировки входной строки. Если входное значение не является символьной строкой, то выходная строка имеет метку «Приведение по умолчанию», и ей присваиваются параметры сортировки текущей базы данных для этого соединения или базы данных, содержащей пользовательскую функцию, хранимую процедуру или триггер, из которых производится вызов функции CAST или CONVERT.
Для встроенных функций несимвольных аргументов, возвращающих строковые переменные, выходная строка имеет метку «Приведение по умолчанию» и ей присваиваются параметры сортировки текущей базы данных или параметры сортировки базы данных, содержащей пользовательскую функцию, хранимую процедуру или триггер, из которых производится вызов данной функции.
Ниже представлены функции, работающие с учетом параметров сортировки, у которых выходным строкам присваивается метка параметров сортировки входной строки.





