среда, 14 июля 2010 г.

Изменение правил сопоставления (collation) и порядка сортировки в MS SQL 2005

Сопоставление (collation) в SQL – это ряд правил, согласно которым сортируются и сравниваются данные. Эти правила определяют порядок сортировки символьных данных, в зависимости от регистра, надстрочных знаков (акцента), символьных типов Kana, ширины символов.

1. Регистр
Если «A» и «a»,» B» и «b», и т.д. считаются одинаковыми, это называется независимостью от регистра. Компьютер считает «A» и «a» различными символами, поскольку им соответствуют разные коды ASCII (ASCII-значение буквы «A» равно 65, в то время как «a» – 97).
2. Надстрочные знаки (акцент)
Если «a» и «á», «o» и «ó» считаются одинаковыми, это называется нечувствительностью к акценту. Компьютер считает «a» и «á» разными, поскольку для них используются различные коды ASCII (ASCII значение «a» равно 97, а символа «á» – 225).
3. Символьные типы Kana
Когда японские kana символы, Hiragana и Katakana, считаются разными, это называют Kana чувствительностью.
4. Ширина символов
Когда однобайтный символ (полуширина) и тот же самый символ, представленный двумя байтами (полная ширина), считаются разными, это называется чувствительностью к ширине.

В MS SQL Server 2005 правила сопоставления можно задать на уровне:

* Сервера
* Базы данных
* Столбца
* Выражения

На уровне сервера правила сопоставления задаются во время первоначальной установки SQL сервера. Выбранное правило сопоставления применяется для системных баз данных. После того как правило сопоставления применено к любому объекту отличному от базы данных или столбца, вы не сможете изменить сопоставление, кроме как с помощью удаления и пересоздания объекта.

В SQL Server 2000 можно было изменить сопоставление на уровне сервера без переустановки сервера. Для этого надо запустить утилиту Rebuild Master (RebuildM.exe), которая расположена в папке Program Files\Microsoft SQL Server\80\Tools\BINN.

В SQL Server 2005 утилита RebuildM.exe не поддерживается. Поэтому для изменения сопоставления вам понадобится перестроить системную базу данных master с помощью параметра REBUILDDATABASE в Setup.exe. Для этого сделайте резервную копию БД, отсоедините все пользовательские БД и выполните:

start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=test SQLCOLLATION=Cyrillic_General_CI_AS

INSTANCENAME – имя экземпляра SQL
SAPWD - пароль пользователя sa
SQLCOLLATION – новое сопоставление

(С) http://pokatashkin.com/archives/1069

Комментариев нет: