Задание и изменение параметров сортировки базы данных
Применимо к: SQL Server Управляемый экземпляр SQL Azure
В этой статье описывается, как задать или изменить параметры сортировки базы данных с помощью SQL Server Management Studio (SSMS) или Transact-SQL. Если параметры сортировки не указаны, используются параметры сортировки сервера.
ограничения
Параметры сортировки Windows только для Юникода могут использоваться лишь с предложением COLLATE для применения параметров сортировки к данным типов nchar, nvarchar и ntext на уровне столбца и на уровне выражения. Их нельзя использовать с предложением COLLATE для изменения параметров сортировки экземпляра базы данных или сервера.
Если указанные параметры сортировки или параметры сортировки, используемые объектом, на который указывает ссылка, используют кодовую страницу, которая не поддерживается Windows, компонент Компонент Database Engine отображает ошибку.
Параметры сортировки на уровне сервера в Управляемом экземпляре SQL Azure можно указать при создании экземпляра и нельзя изменить позднее. Подробнее см. в статье Задание или изменение параметров сортировки сервера.
Важно!
Инструкция ALTER DATABASE COLLATE
не поддерживается в Базе данных SQL Azure. Укажите параметры сортировки базы данных и каталога во время инструкции CREATE DATABASE.
Рекомендации
Поддерживаемые имена параметров сортировки можно найти в разделе Имя параметров сортировки 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. Это более простой подход для сложных схем. Здесь также перед окончательным удалением потребуется финальная синхронизация исходной и новой баз данных в случае, если данные будут продолжать изменяться приложениями.
Разрешения
Чтобы создать новую базу данных, требуется CREATE DATABASE
разрешение в master
базе данных или CREATE ANY DATABASE
разрешение или ALTER ANY DATABASE
.
Чтобы изменить параметры сортировки имеющейся базы данных, требуется разрешение ALTER
в базе данных.
Задание и изменение параметров сортировки базы данных с помощью SSMS
В обозревателе объектовподключитесь к экземпляру компонента Компонент SQL Server Database Engine, разверните его, а затем разверните узел Базы данных.
При создании новой базы данных щелкните правой кнопкой мыши Базы данных и выберите пункт Создать базу данных. Если вы не хотите использовать параметры сортировки по умолчанию, выберите страницу Параметры и выберите параметры сортировки в раскрывающемся списке Параметры сортировки .
Если база данных уже существует, щелкните правой кнопкой мыши нужную базу данных и выберите пункт Свойства. Перейдите на страницу Параметры , а затем выберите нужный вариант в раскрывающемся списке Параметры сортировки.
По завершении нажмите кнопку ОК.
Задание параметров сортировки базы данных с помощью Transact-SQL
Установите соединение с компонентом Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере показано задание параметров сортировки с помощью предложения 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
Установите соединение с компонентом Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере показано изменение имени параметров сортировки с помощью предложения 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)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по