Задание и изменение параметров сортировки базы данных
Область применения: SQL Server Управляемый экземпляр SQL Azure
В этой статье описывается, как задать или изменить параметры сортировки базы данных с помощью SQL Server Management Studio (SSMS) или Transact-SQL. Если параметры сортировки не указаны, используются параметры сортировки сервера.
ограничения
Параметры сортировки Windows только для Юникода могут использоваться лишь с предложением COLLATE для применения параметров сортировки к данным типов nchar, nvarchar и ntext на уровне столбца и на уровне выражения. Их нельзя использовать с предложением COLLATE для изменения сортировки экземпляра базы данных или сервера.
Если указанный параметр сортировки или параметры сортировки, используемые объектом, на который ссылается ссылка, использует кодовую страницу, которая не поддерживается Windows, ядро СУБД отображает ошибку.
Параметры сортировки на уровне сервера в Управляемом экземпляре SQL Azure можно указать при создании экземпляра и нельзя изменить позднее. Подробнее см. в статье Задание или изменение параметров сортировки сервера.
Внимание
Инструкция ALTER DATABASE COLLATE
не поддерживается в Базе данных SQL Azure. Укажите параметры сортировки базы данных и параметры сортировки каталога во время СОЗДАНИЯ БАЗЫ ДАННЫХ.
Рекомендации
Поддерживаемые имена параметров сортировки можно найти в имени сортировки Windows (Transact-SQL) и имени сортировки SQL Server (Transact-SQL) или системной функции sys.fn_helpcollations (Transact-SQL).
При изменении параметров сортировки базы данных изменяется следующее:
Все столбцы типа char, varchar, text, nchar, nvarcharили ntext в системных таблицах заменяются новым параметром сортировки.
Все существующие параметры типа char, varchar, text, nchar, nvarcharили ntext и возвращаемые скалярные значения для хранимых процедур и определяемых пользователем функций заменяются новым параметром сортировки.
Системные типы данных char, varchar, text, nchar, nvarcharили ntext и все определяемые пользователем типы данных, основанные на этих системных типах данных, заменяются новым параметром сортировки по умолчанию.
Вы можете изменить параметры сортировки любых новых объектов, созданных в пользовательской базе данных, с помощью предложения COLLATE
инструкции ALTER DATABASE. Эта инструкция не изменяет параметры сортировки столбцов в любых существующих пользовательских таблицах. Они могут быть изменены с помощью предложения COLLATE
инструкции ALTER TABLE.
Внимание
Изменение параметров сортировки базы данных или отдельных столбцов не изменяет базовых данных, уже хранящихся в существующих таблицах. Если приложение явным образом не обрабатывает преобразование и сравнение данных с различными параметрами сортировки, рекомендуется перевести существующие в базе данных данные в новые параметры сортировки. Это устранит риск того, что приложения могут неправильно изменять данные, что приведет к возможным неправильным результатам или незамеченной потере данных.
По умолчанию при изменении параметров сортировки базы данных только новые таблицы наследуют параметры сортировки новой базы данных. Существует несколько способов преобразования существующих данных в новые параметры сортировки.
Преобразование данных на месте. Сведения о преобразовании параметров сортировки для столбца в существующей таблице см. в разделе Задание или изменение параметров сортировки столбца. Эта операция проста в реализации, но может стать блокирующей проблемой для больших таблиц и нагруженных приложений. Приведем следующий пример преобразования столбца
MyString
в новые параметры сортировки на месте.ALTER TABLE dbo.MyTable ALTER COLUMN MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8;
Копирование данных в новые таблицы, в которых используются новые параметры сортировки, и замена исходных таблиц в той же базе данных. Создайте новую таблицу в текущей базе данных, которая будет наследовать параметры сортировки базы данных, скопируйте данные из старой таблицы в новую, удалите исходную таблицу и переименуйте новую таблицу в имя исходной таблицы. Эта операция выполняется быстрее, чем преобразование на месте, но может стать сложной задачей при обработке сложных схем с зависимостями, такими как ограничения внешнего ключа, ограничения первичного ключа и триггеры. Кроме того, перед окончательным удалением потребуется финальная синхронизация исходной и новой таблиц в случае, если данные будут продолжать изменяться приложениями. Приведем следующий пример преобразования "копирование и замена" столбца
MyString
в новые параметры сортировки.CREATE TABLE dbo.MyTable2 (MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8); INSERT INTO dbo.MyTable2 SELECT * FROM dbo.MyTable; DROP TABLE dbo.MyTable; EXEC sp_rename 'dbo.MyTable2', 'dbo.MyTable';
Копирование данных в новую базу данных, в которой используются новые параметры сортировки, и замена исходной базы данных. Создайте базу данных с помощью новой сортировки и передайте данные из исходной базы данных с помощью таких средств, как Службы Integration Services или мастер импорта и экспорта в SQL Server Management Studio. Это более простой подход для сложных схем. Здесь также перед окончательным удалением потребуется финальная синхронизация исходной и новой баз данных в случае, если данные будут продолжать изменяться приложениями.
Разрешения
Чтобы создать новую базу данных, требуется разрешение в master
базе данных или требуется CREATE DATABASE
CREATE ANY DATABASE
или ALTER ANY DATABASE
разрешение.
Чтобы изменить параметры сортировки имеющейся базы данных, требуется разрешение ALTER
в базе данных.
Установка или изменение сортировки базы данных с помощью SSMS
В обозреватель объектов подключитесь к экземпляру ядро СУБД SQL Server, разверните этот экземпляр и разверните базы данных.
При создании новой базы данных щелкните правой кнопкой мыши Базы данных и выберите пункт Создать базу данных. Если параметры сортировки по умолчанию не нужны, выберите страницу "Параметры" и выберите параметры сортировки в раскрывающемся списке сортировки.
Если база данных уже существует, щелкните правой кнопкой мыши нужную базу данных и выберите пункт Свойства. Перейдите на страницу Параметры , а затем выберите нужный вариант в раскрывающемся списке Параметры сортировки.
По завершении нажмите кнопку ОК.
Настройка сортировки базы данных с помощью Transact-SQL
Соединитесь с ядром СУБД .
На стандартной панели выберите пункт Создать запрос.
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере показано задание параметров сортировки с помощью предложения COLLATE в инструкции CREATE DATABASE. В примере создается база данных
MyOptionsTest
, в которой используются параметры сортировкиLatin1_General_100_CS_AS_SC
. Чтобы проверить параметр, после создания базы данных выполните инструкциюSELECT
.
USE master;
GO
IF DB_ID (N'MyOptionsTest') IS NOT NULL
DROP DATABASE MyOptionsTest;
GO
CREATE DATABASE MyOptionsTest
COLLATE Latin1_General_100_CS_AS_SC;
GO
SELECT name, collation_name
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO
Изменение параметров сортировки базы данных с помощью Transact-SQL
Соединитесь с ядром СУБД .
На стандартной панели выберите пункт Создать запрос.
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере показано изменение имени параметров сортировки с помощью предложения COLLATE в инструкции ALTER DATABASE. Выполните инструкцию
SELECT
, чтобы проверить изменение.
USE master;
GO
ALTER DATABASE MyOptionsTest
COLLATE French_CI_AS ;
GO
SELECT name, collation_name
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO
Следующие шаги
Дополнительные сведения о параметрах сортировки:
- Поддержка параметров сортировки и Юникода
- sys.fn_helpcollations (Transact-SQL)
- sys.databases (Transact-SQL)
- Имя параметров сортировки SQL Server (Transact-SQL)
- Имя параметров сортировки Windows (Transact-SQL)
- COLLATE (Transact-SQL)
- Приоритет сортировки (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- CREATE DATABASE (SQL Server Transact-SQL)
- Инструкция ALTER TABLE (Transact-SQL)
- ALTER DATABASE (Transact-SQL)