Задание и изменение параметров сортировки базы данных

Применимо к: 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

  1. В обозревателе объектовподключитесь к экземпляру компонента Компонент SQL Server Database Engine, разверните его, а затем разверните узел Базы данных.

  2. При создании новой базы данных щелкните правой кнопкой мыши Базы данных и выберите пункт Создать базу данных. Если вы не хотите использовать параметры сортировки по умолчанию, выберите страницу Параметры и выберите параметры сортировки в раскрывающемся списке Параметры сортировки .

    Если база данных уже существует, щелкните правой кнопкой мыши нужную базу данных и выберите пункт Свойства. Перейдите на страницу Параметры , а затем выберите нужный вариант в раскрывающемся списке Параметры сортировки.

  3. По завершении нажмите кнопку ОК.

Задание параметров сортировки базы данных с помощью Transact-SQL

  1. Установите соединение с компонентом Компонент Database Engine.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере показано задание параметров сортировки с помощью предложения 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

  1. Установите соединение с компонентом Компонент Database Engine.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере показано изменение имени параметров сортировки с помощью предложения 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  

Следующие шаги

Дополнительные сведения о параметрах сортировки: