Поделиться через


Установить или изменить коллатуру базы данных

Область применения: SQL Server Управляемый экземпляр SQL Azure

В этой статье описывается, как задать или изменить параметры сортировки базы данных с помощью SQL Server Management Studio (SSMS) или Transact-SQL.

Если параметры сортировки базы данных не заданы, используется сортировка сервера.

Рекомендации

Вы можете найти поддерживаемые имена сортировок в именах сортировки Windows и именах сортировки SQL Server, или использовать системную функцию sys.fn_helpcollations.

При изменении параметров сортировки базы данных изменяется следующее:

  • Все столбцы типа char, varchar, text, nchar, nvarcharили ntext в системных таблицах заменяются новым параметром сортировки.

  • Все существующие параметры типа char, varchar, text, nchar, nvarcharили ntext и возвращаемые скалярные значения для хранимых процедур и определяемых пользователем функций заменяются новым параметром сортировки.

  • Системные типы данных char, varchar, text, nchar, nvarcharили ntext и все определяемые пользователем типы данных, основанные на этих системных типах данных, заменяются новым параметром сортировки по умолчанию.

Вы можете изменить параметры сортировки любых новых объектов, созданных в пользовательской базе данных, с помощью предложения COLLATE инструкции ALTER DATABASE. Эта инструкция не изменяет параметры сортировки столбцов в любых существующих пользовательских таблицах. Они могут быть изменены с помощью предложения COLLATE инструкции ALTER TABLE.

Разрешения

Чтобы создать новую базу данных, вам потребуется CREATE DATABASE разрешение в master базе данных или CREATE ANY DATABASEALTER ANY DATABASE разрешение.

Чтобы изменить параметры сортировки существующей базы данных, необходимо ALTER разрешение на базу данных.

Установка или изменение сопоставления базы данных

Можно задать или изменить параметры сортировки базы данных с помощью SQL Server Management Studio (SSMS) или Transact-SQL (T-SQL).

Можно указать параметры сортировки для новой базы данных или обновить параметры сортировки для существующей базы данных с помощью SQL Server Management Studio (SSMS).

В SQL Server Management Studio откройте Обозреватель объектов, подключитесь к экземпляру SQL Server Database Engine, раскройте этот экземпляр, а затем раскройте Базы данных:

  • Для новой базы данных: щелкните правой кнопкой мыши базы данных и выберите "Создать базу данных". Если параметры сортировки по умолчанию не нужны, откройте страницу Опции и выберите параметры сортировки из выпадающего списка Сортировка.
  • Для существующей базы данных щелкните правой кнопкой мыши нужную базу данных и выберите пункт "Свойства". Выберите страницу "Параметры" и выберите сортировку в раскрывающемся списке Сортировка.

Данные после изменения сортировки

Внимание

Изменение параметров сортировки базы данных или отдельных столбцов не изменяет базовых данных, уже хранящихся в существующих таблицах. Если приложение явным образом не обрабатывает преобразование и сравнение данных с различными параметрами сортировки, рекомендуется перевести существующие в базе данных данные в новые параметры сортировки. Это устраняет риск, что приложения могут неправильно изменять данные, что приводит к возможному неправильному результату или автоматической потере данных.

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

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

    ALTER TABLE dbo.MyTable
        ALTER COLUMN MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8;
    
  • Копирование данных в новые таблицы, в которых используются новые параметры сортировки, и замена исходных таблиц в той же базе данных. Создайте новую таблицу в текущей базе данных, которая будет наследовать параметры сортировки базы данных, скопируйте данные из старой таблицы в новую, удалите исходную таблицу и переименуйте новую таблицу в имя исходной таблицы. Это быстрая операция, чем преобразование на месте, но может стать проблемой при обработке сложных схем с зависимостями, такими как ограничения внешнего ключа, ограничения первичного ключа и триггеры. Кроме того, перед окончательным удалением потребуется финальная синхронизация исходной и новой таблиц в случае, если данные будут продолжать изменяться приложениями. Посмотрите следующий пример преобразования «copy and replace» для столбца 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. Это более простой подход для сложных схем. Здесь также перед окончательным удалением потребуется финальная синхронизация исходной и новой баз данных в случае, если данные будут продолжать изменяться приложениями.

Ограничения

  • Параметры сортировки Windows только для Юникода могут использоваться лишь с предложением COLLATE для применения параметров сортировки к данным типов nchar, nvarchar и ntext на уровне столбца и на уровне выражения. Их нельзя использовать с оператором COLLATE для изменения порядка сортировки в экземпляре базы данных или на сервере.

  • Если указанный параметр сортировки или параметры сортировки, используемые объектом, на который ссылается ссылка, использует кодовую страницу, которая не поддерживается Windows, ядро СУБД отображает ошибку.

  • Сортировка на уровне сервера в Управляемом экземпляре SQL Azure может быть определена при создании экземпляра и не может быть изменена позже. Узнайте больше в разделе Настроить или изменить сортировку сервера.

Внимание

Инструкция ALTER DATABASE COLLATE не поддерживается в Базе данных SQL Azure. Укажите параметры сортировки базы данных и параметры сортировки каталога во время СОЗДАНИЯ БАЗЫ ДАННЫХ.