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

Применимо к: даSQL Server (все поддерживаемые версии)

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

Важно!

Инструкция ALTER DATABASE COLLATE в Базе данных SQL Azure не поддерживается.

В этом разделе

Перед началом

Ограничения

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

  • Если указанные или используемые объектом по ссылке параметры сортировки используют кодовую страницу, не поддерживаемую Windows, то компонент Компонент Database Engine выдаст ошибку.

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

Имена поддерживаемых параметров сортировки вы можете найти в статьях Имя параметров сортировки 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. Это более простой подход для сложных схем. Здесь также перед окончательным удалением потребуется финальная синхронизация исходной и новой баз данных в случае, если данные будут продолжать изменяться приложениями.

безопасность

Permissions

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

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

Использование среды SQL Server Management Studio

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

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

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

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

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

Использование Transact-SQL

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

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

  2. На панели «Стандартная» нажмите Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере показано задание параметров сортировки с помощью предложения COLLATE . В примере создается база данных 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  
  
--Verify the collation setting.  
SELECT name, collation_name  
FROM sys.databases  
WHERE name = N'MyOptionsTest';  
GO  

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

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

  2. На панели «Стандартная» нажмите Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере показано изменение имени параметров сортировки с помощью предложения COLLATE в инструкции ALTER DATABASE . Выполните инструкцию SELECT , чтобы проверить изменение.

USE master;  
GO  
ALTER DATABASE MyOptionsTest  
COLLATE French_CI_AS ;  
GO  
  
--Verify the collation setting.  
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)