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

Откуда:
Сообщений: 13
Добрый вечер,уважаемые форумчане!

Ситуация такая, SQL Server 2008 R2, был в Latin стал в Cyrillic_General_CI_AS COLLATE.
Поменял таким скриптом:

автор
ALTER DATABASE BROA_Access SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE BROA_Access COLLATE Cyrillic_General_CI_AS
ALTER DATABASE BROA_Access SET MULTI_USER


собственно вопрос- требуемая цель была достигнута, русские символы вставляются в новые поля старых таблиц..
Есть ли мне смысл пересобирать индексы и если да,то у каких таблиц- где используется русская кодировка или у всех?
База очень большая и индексов там тоже очень много, в ручную можно год менять наверное...

Чем вообще чреват подход без пересборки PK,FK и индексов работать как было ранее?

Спасибо заранее за оказанную помощь!
18 авг 13, 23:44    [14723613]     Ответить | Цитировать Сообщить модератору
 Re: После смены Collate на Cyrilic что то еще нужно делать?  [new]
saycale
Member

Откуда: Москва->Сидней
Сообщений: 32
Обновление индексов, статистики для всех таблиц это обычная реглементная процедура, которая должна проводится регулярно в автоматическом режиме (скриптами или планами выполнения) независимо от того перестроили ли Вы базу или нет. Посмотреть на операции
UPDATE STATISTICS
,
ALTER INDEX
. Подробности здесь [url=]http://technet.microsoft.com/en-us/library/ms189858.aspx[/url]
19 авг 13, 05:08    [14723766]     Ответить | Цитировать Сообщить модератору
 Re: После смены Collate на Cyrilic что то еще нужно делать?  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Clean
требуемая цель была достигнута, русские символы вставляются в новые поля старых таблиц..
А разве смена collation у БД влияет на пользовательские таблицы?
http://msdn.microsoft.com/en-us/library/ms175835.aspx
You can change the collation of any new objects that are created in a user database by using the COLLATE clause of the ALTER DATABASE statement. This statement does not change the collation of the columns in any existing user-defined tables. These can be changed by using the COLLATE clause of ALTER TABLE.
19 авг 13, 06:10    [14723771]     Ответить | Цитировать Сообщить модератору
 Re: После смены Collate на Cyrilic что то еще нужно делать?  [new]
Ennor Tiegael
Member

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

Ну, однопользовательский режим был лишний, оно и без него прекрасно меняется. Собственно, потому что реально ничего не меняет.
Clean
русские символы вставляются в новые поля старых таблиц
А вот в старые поля по-прежнему идет криво, правда? Ищите скрипт по смене коллейшна во всех текстовых полях всех таблиц БД, и здесь и в инете таких навалом. Можно и самому написать.
19 авг 13, 06:42    [14723779]     Ответить | Цитировать Сообщить модератору
 Re: После смены Collate на Cyrilic что то еще нужно делать?  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Ruuu
Clean
требуемая цель была достигнута, русские символы вставляются в новые поля старых таблиц..
А разве смена collation у БД влияет на пользовательские таблицы?

Ennor Tiegael
Ну, однопользовательский режим был лишний, оно и без него прекрасно меняется. Собственно, потому что реально ничего не меняет.
Clean
русские символы вставляются в новые поля старых таблиц
точно, не заметил, что речь о новых полях.
19 авг 13, 07:19    [14723797]     Ответить | Цитировать Сообщить модератору
 Re: После смены Collate на Cyrilic что то еще нужно делать?  [new]
saycale
Member

Откуда: Москва->Сидней
Сообщений: 32
После смены collation у пользовательской БД я бы проверил хранимые процедуры у которых используются временные таблицы (#таблица) со строковыми полями и не задан явно collation, так как они будут использовать collation tempdb базы данных и возможны сюрпризы если collation у tempdb отличается от пользовательской базы данных.
19 авг 13, 09:02    [14723886]     Ответить | Цитировать Сообщить модератору
 Re: После смены Collate на Cyrilic что то еще нужно делать?  [new]
Clean
Member

Откуда:
Сообщений: 13
Очень признателен за помощь!

После обновления Collate я без проблем переименовал старые поля, да и добавил новые- все в кирилице, а раньше были вопросы..
Т.е меня все устраивает. но почему так вышло?
Стоит MS Sql 2008 R2 Standart.
По идее я должен был менять коллейт у всех текстовых полей?


Кстати индексы я не обновлял, это нужно я так понимаю сделать как посоветовали тут:
saycale
Обновление индексов, статистики для всех таблиц это обычная реглементная процедура, которая должна проводится регулярно в автоматическом режиме (скриптами или планами выполнения) независимо от того перестроили ли Вы базу или нет. Посмотреть на операции
UPDATE STATISTICS
,
ALTER INDEX
. Подробности здесь [url=]http://technet.microsoft.com/en-us/library/ms189858.aspx[/url]



Огромное спасибо за помощь!
23 авг 13, 00:52    [14744801]     Ответить | Цитировать Сообщить модератору
 Re: После смены Collate на Cyrilic что то еще нужно делать?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Clean
но почему так вышло?

Потому что в строках char и varchar символы, которых нет в collation'е базы, заменяются на вопросительные знаки. Со строками nchar и nvarchar такого не происходит.

CREATE DATABASE Latin_Test COLLATE Latin1_General_CI_AS;
GO
USE Latin_Test;
GO
SELECT DB_NAME() AS DB, 'Тест' AS Char_Data, N'Тест' AS NChar_Data;
GO
CREATE DATABASE Cyrillic_Test COLLATE Cyrillic_General_CI_AS;
GO
USE Cyrillic_Test;
GO
SELECT DB_NAME() AS DB, 'Тест' AS Char_Data, N'Тест' AS NChar_Data;
GO
USE master;
GO
DROP DATABASE Latin_Test, Cyrillic_Test;
GO


К сообщению приложен файл. Размер - 17Kb
23 авг 13, 08:39    [14745168]     Ответить | Цитировать Сообщить модератору
 Re: После смены Collate на Cyrilic что то еще нужно делать?  [new]
Clean
Member

Откуда:
Сообщений: 13
Да,действительно интересная особенность!Спасибо за ответ!!

Теперь только один вопрос - ребилдить индексы или нет?
23 авг 13, 11:40    [14746404]     Ответить | Цитировать Сообщить модератору
 Re: После смены Collate на Cyrilic что то еще нужно делать?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Clean
Теперь только один вопрос - ребилдить индексы или нет?

Из-за смены дефолт коллейта базы ??? Разумеется нет
23 авг 13, 11:41    [14746431]     Ответить | Цитировать Сообщить модератору
 Re: После смены Collate на Cyrilic что то еще нужно делать?  [new]
Clean
Member

Откуда:
Сообщений: 13
В общем да,именно из за него.
Спасибо!!!
23 авг 13, 15:12    [14748171]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить