Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Текстовые символы при смене collation на БД  [new]
DonPedro
Member

Откуда:
Сообщений: 6
Добрый день.
Столкнулся с проблемой при смене collation на БД. Есть два сервера 2008 r2, на первом Cyrillic_General_CI_AS, на втором SQL_Latin1_General_CP1_CI_AS.

На первом делаю бэкап бд,восстанавливаю его на втором. После этого делаю,как описано в:
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=147286&msg=1243868

На этапе смены collation на уровне столбца замечаю, что вместо
id role
2 master
получаю
id role
2 ??????

Кто-нибудь сталкивался с подобными граблями? Может, данные типы collation несовместимы?
Заранее спасибо.
29 авг 11, 18:20    [11197079]     Ответить | Цитировать Сообщить модератору
 Re: Текстовые символы при смене collation на БД  [new]
aleks2
Guest
Панацея зоватся Nvarchar.
В миру - Unicode.
29 авг 11, 18:44    [11197219]     Ответить | Цитировать Сообщить модератору
 Re: Текстовые символы при смене collation на БД  [new]
DonPedro
Member

Откуда:
Сообщений: 6
Дело в том,что я еще не настоящий админ sql server'a, поэтому я не очень понял, что имеется в виду.
Символьный столбец в таблице сабжа имеет тип varchar. Типы столбцов я менять не могу.Collation другой тоже использовать не могу. Новый инстанс,конечно,можно слабать,но жалко ради одной БД...
30 авг 11, 11:00    [11199328]     Ответить | Цитировать Сообщить модератору
 Re: Текстовые символы при смене collation на БД  [new]
iljy
Member

Откуда:
Сообщений: 8711
DonPedro,

хрень вы какую-то пишете. Попробуйте:
create table ttt(
	id int,
	name varchar(30) collate Cyrillic_General_CI_AS
)
insert ttt values(1,'мастер'),(2,'master')
select * from ttt

alter table ttt alter column name varchar(30) collate SQL_Latin1_General_CP1_CI_AS

select * from ttt
drop table ttt
Должно получиться
id	name
1 мастер
2 master


id name
1 ??????
2 master
30 авг 11, 11:12    [11199429]     Ответить | Цитировать Сообщить модератору
 Re: Текстовые символы при смене collation на БД  [new]
iljy
Member

Откуда:
Сообщений: 8711
DonPedro,

хотя я, честно говоря, в принципе не понял, нафига этот самый collation вообще менять.
30 авг 11, 11:14    [11199447]     Ответить | Цитировать Сообщить модератору
 Re: Текстовые символы при смене collation на БД  [new]
DonPedro
Member

Откуда:
Сообщений: 6
iljy

Да,так и получается. Так как мне сделать, чтоб при смене коллейшна кириллические символы в уже введенных данных сохранялись?
30 авг 11, 11:32    [11199568]     Ответить | Цитировать Сообщить модератору
 Re: Текстовые символы при смене collation на БД  [new]
iljy
Member

Откуда:
Сообщений: 8711
DonPedro
iljy

Да,так и получается. Так как мне сделать, чтоб при смене коллейшна кириллические символы в уже введенных данных сохранялись?

Как вы себе представляете хранение кириллицы в некириллической кодовой странице? Их просто НЕТ в наборе символов, допускаемых SQL_Latin1_General_CP1_CI_AS. Так что либо оставьте поле в покое, либо, если нужна многоязычность, переводите поле в юникод.
30 авг 11, 11:36    [11199593]     Ответить | Цитировать Сообщить модератору
 Re: Текстовые символы при смене collation на БД  [new]
DonPedro
Member

Откуда:
Сообщений: 6
iljy,
Вы предлагаете БД переводить в юникод? А как потом БД будет работать с tempdb или с хранимками в мастере? Или Вы предлагаете перевести инстанс целиком на юникод?
30 авг 11, 11:52    [11199776]     Ответить | Цитировать Сообщить модератору
 Re: Текстовые символы при смене collation на БД  [new]
iljy
Member

Откуда:
Сообщений: 8711
DonPedro
iljy,
Вы предлагаете БД переводить в юникод? А как потом БД будет работать с tempdb или с хранимками в мастере? Или Вы предлагаете перевести инстанс целиком на юникод?

Я предлагаю сесть и подумать, что вы хотите сделать, а главное - зачем.
30 авг 11, 12:00    [11199840]     Ответить | Цитировать Сообщить модератору
 Re: Текстовые символы при смене collation на БД  [new]
DonPedro
Member

Откуда:
Сообщений: 6
iljy,

Я хочу развернуть бэкап БД на сервере с другим collation и чтобы у меня кириллические символы корректно при этом отображались.
30 авг 11, 12:04    [11199870]     Ответить | Цитировать Сообщить модератору
 Re: Текстовые символы при смене collation на БД  [new]
iljy
Member

Откуда:
Сообщений: 8711
DonPedro
iljy,

Я хочу развернуть бэкап БД на сервере с другим collation и чтобы у меня кириллические символы корректно при этом отображались.

1. Отображение символов никак с сервером не связано, этим занимается клиент.
2. Корректно хранится символы могут только в кодовой странице, их допускающей, либо в юникоде.
3. Кодовая страница поля никак не связана с кодовой страницей сервера или базы.
30 авг 11, 12:07    [11199884]     Ответить | Цитировать Сообщить модератору
 Re: Текстовые символы при смене collation на БД  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
DonPedro, вы знаете чем отличаются varchar и nvarchar?
30 авг 11, 12:08    [11199891]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить