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

Откуда:
Сообщений: 8
Здравствуйте,
посмотрел уже по теме, почитал. Везде проблема сменить collation для сервера в целом. Мне нужно сменить для 1 БД.
У сервера collation стоит какой мне надо Cyrillic_General_CI_AS, а создавая БД выбрал Cyrillic_General_CI_AI и залил данные. БД 1С-овская (7.7). Теперь прога вываливается.

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

Что нужно сделать после смены collation для БД, чтоб он реально сменился???

К сообщению приложен файл. Размер - 26Kb
18 мар 13, 16:15    [14063263]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Glory
Member

Откуда:
Сообщений: 104751
Юрий Крылов
Мне нужно сменить для 1 БД.

Для базы или для всех уже созданных в ней объектов ?
18 мар 13, 16:17    [14063272]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Юрий Крылов
Member

Откуда:
Сообщений: 8
Честно, я не очень понял вопрос. Но думаю, что как раз для все объектов в ней, потому-что для БД я уже сменил, к сожалению безрезультатно :-(
18 мар 13, 16:18    [14063285]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Glory
Member

Откуда:
Сообщений: 104751
Юрий Крылов
Честно, я не очень понял вопрос

collation БД только является неким значением по-умолчанию для новых объектов
Изменяя collation БД, вы не меняете collation уже созданных объектов.
18 мар 13, 16:20    [14063294]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Юрий Крылов
Member

Откуда:
Сообщений: 8
Ага, вот теперь понял. Честно я об этом уже стал догадываться :-)
А как поменять его у всех объектов средствами SQL???
18 мар 13, 16:21    [14063302]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Glory
Member

Откуда:
Сообщений: 104751
Юрий Крылов
А как поменять его у всех объектов средствами SQL???

Поменять каждый объект вручную
Или
Создать новую базу и в ней - объекты
18 мар 13, 16:22    [14063309]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Юрий Крылов
Member

Откуда:
Сообщений: 8
Так если порядка 200 таблиц и в них по тысяче записей, вручную уже не реально.
Сохранить в резервную копию, создать БД с нужным колейшн и загрузить туда из резервной копии. Пробовал. Не катит.
Может есть какой скрипт?
18 мар 13, 16:25    [14063332]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
угу еще стоит посмотреть какой коллейш у сервера...бо можете словить тоже самое на tempdb
18 мар 13, 16:26    [14063334]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Юрий Крылов
Member

Откуда:
Сообщений: 8
Glory, а копированием из одной БД в другую средствами SQL прокатит???
18 мар 13, 16:26    [14063343]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Юрий Крылов
Member

Откуда:
Сообщений: 8
Maxx, на SQL сервере Cyrillic_General_CI_AS
18 мар 13, 16:27    [14063353]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Юрий Крылов,
помоему он там "прописывает" колатион полей :( Нужно осхранить в скрипт и руками подправить ...
Яб попробовал бы
1. Создать структуру БД (без ПК,ФК....)
2. Выгрузить bcp все таблицы
3. Загрузить через bcp в новую БД
4. Поднять все (ПК, ФК....)

НО все таки изначально попробуйте визардом по уже созданой БД
18 мар 13, 16:46    [14063478]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Юрий Крылов
Member

Откуда:
Сообщений: 8
ПК - это примари кей? ФК - фориджин кей???
А как я создам структуру БД?
И что визардом пробовать????
18 мар 13, 16:53    [14063523]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Юрий Крылов,

Попробуйте такой скрипт:
select N'ALTER TABLE ' + QUOTENAME(c.TABLE_SCHEMA) + N'.' + QUOTENAME(c.TABLE_NAME) +
       N' ALTER COLUMN ' + QUOTENAME(c.COLUMN_NAME) + N' ' + c.DATA_TYPE + N'(' +
       isnull(nullif(cast(c.CHARACTER_MAXIMUM_LENGTH as varchar(30)), '-1'), 'max') + N') ' +
       N'COLLATE Cyrillic_General_CI_AS ' +
       case when c.IS_NULLABLE = 'YES' then N'NULL' else N'NOT NULL' end,  *
from INFORMATION_SCHEMA.COLUMNS c
where c.COLLATION_NAME = N'Cyrillic_General_CI_AI'
18 мар 13, 16:55    [14063544]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Юрий Крылов,

По живой БД запускаете generate sql script (а по нормальному должны быть исходники)
Да ПК,ФК ето типы контрейнов на местном диалекте
Есть видард Скопировать БД или Импорт\Експорт ,им можно попробовать воспользоватся для вашей задачи
18 мар 13, 16:57    [14063558]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Юрий Крылов
Member

Откуда:
Сообщений: 8
Гость333, так запрос-то select, как он что-то исправит???
Помогло вот это: ResetCollation от http://dev.citykirov.ru/
19 мар 13, 08:32    [14065347]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Юрий Крылов
Гость333, так запрос-то select, как он что-то исправит???

Действительно, подумаешь, запрос выдаёт несколько строк с какими-то ALTER TABLE — как это может что-то исправить?
Если что, это был первоначальный набросок, про возможное вхождение столбцов в индексы я как-то не подумал.

Юрий Крылов
Помогло вот это: ResetCollation от http://dev.citykirov.ru/

Посмотрел этот ResetCollation. Надеюсь, вы разбирались, как он работает, прежде чем запустить? В 2008R2 он может работать с ошибками — как явными (синтаксическими), так и неявными (скрипт выполнился, но структура метаданных изменилась). Да и для случая 2000 этот скрипт содержит ошибки.

В общем, вам повезло, если вы просто прогнали этот скрипт, и всё закончилось хорошо :-)
19 мар 13, 10:04    [14065691]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4994
Юрий Крылов,
Попробуйте создать пустую БД с нужным collation и восстановить в нее старую из бекапа.
19 мар 13, 11:29    [14066176]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
generalmaximus
Member

Откуда: Хабаровск
Сообщений: 66
ЕвгенийВ,

я так сейчас попробовал, у меня не получилось. Ругается на то что БД не одинаоковая. а если указываю галку Overwrite - то разворачивает с латинской collation
21 мар 13, 06:26    [14075280]     Ответить | Цитировать Сообщить модератору
 Re: Сменить collation для БД на MS SQL 2008 R2  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
generalmaximus
ЕвгенийВ,

я так сейчас попробовал, у меня не получилось. Ругается на то что БД не одинаоковая. а если указываю галку Overwrite - то разворачивает с латинской collation
При восстановлении базы из бакапа она восстанавливается сектор за сектором - то есть всё будет так же, как в той базе, с которой сделан бакап.

Нужно либо менять collation таблиц и строк вручную, или разобраться с скриптом от Гость333, он делает то же самое.
21 мар 13, 08:51    [14075455]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить