Collation

Fedor34
Дата: 08.06.2011 16:49:30
Добрый день.

Никак не могу понять как работать с этими Collation.
Досталась в наследство база SQL Server 2000, я её перенес благополучно на новый SQL SERVER 2008 R2.
Все текстовые поля в таблицах nvarchar и все хранится в юникоде.

Но у всех стоят разные Collation. От Cyrillic_General_BIN до SQL_Latin1_General_CP1_CI_AS
И регулярно я получаю ошибки вида Collation Conflict.

Что и как нужно сделать, что бы забыть про все эти конфликты?
Нужно всем поставить что-то одно?
Есть ли что-то вида Collation UTF8?

Запутался окончательно :)
Спасибо
Crimean
Дата: 08.06.2011 16:54:14
в разных таблицах у разных полей разные коляции??
или проблема от несоответствия коляции базы и сервера? типа на операциях с tempdb?
Fedor34
Дата: 08.06.2011 17:00:53
Crimean,

Да, в разных таблицах и более того в одной таблицы у разных полей nvarchar разные Collation.
почему так я не знаю. Вот хочу все привести в правильный вид.

Частенько я делаю временные таблицы. И мне надо сравнивать значения в этих таблицах со значениями в обычных таблицах.
Приходиться писать чуть-ли не на каждое поле COLLATE <что-то там>.

Вот от этого и хочу избавиться. Хочу что бы везде было все одинаково.
Зачем мне вообще это Collation - когда я храню все в юникоде? (У меня могут быть разные буквы из разных языков в одном поле).
Fedor34
Дата: 08.06.2011 17:39:08
Ага, вроде понял, поправьте если не так.

Collation надо указывать для любого unicode'ного поля, так как оно влияет на сортировку и прочее.

Тогда что бы мне избавиться от всяких конфликтов, надо все
колонки в базе title_ru, title_en, title_fr, title_de поставить соответствующие Collations

И для временные таблицы создавать указывая collate явно.

Вроде так. Попробую :)
Ivan Durak
Дата: 09.06.2011 18:30:46
Fedor34
Ага, вроде понял, поправьте если не так.

Collation надо указывать для любого unicode'ного поля, так как оно влияет на сортировку и прочее.

Тогда что бы мне избавиться от всяких конфликтов, надо все
колонки в базе title_ru, title_en, title_fr, title_de поставить соответствующие Collations

И для временные таблицы создавать указывая collate явно.

Вроде так. Попробую :)

приведите все текстовые поля к колэйшену дефолтному для сервера!
Тогда временные можно создавать без указания... они будут с коллэйшеном сервера.