Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Нужно изменить COLLATION у DATABASE с кучей данных. Брыкается. =(  [new]
Sad Ed
Guest
Доброе утро.
С collation особо не работал, но при восстановлении базы с другого сервера начала лезть ошибка мол оно не совпадает, караул.
У базы почему-то какой-то левый collation в настройках, не как должен быть. Пытаюсь поменять:
ALTER DATABASE db COLLATE Cyrillic_General_CI_AS

Вот такая %случайное_слово%:
The database could not be exclusively locked to perform the operation.
ALTER DATABASE failed. The default collation of database 'db' cannot be set to Cyrillic_General_CI_AS.

Хорошо, покопался в поисковике, вот так его:
ALTER DATABASE db SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE db COLLATE Cyrillic_General_CI_AS
ALTER DATABASE db SET MULTI_USER

Предыдущая ошибка побеждена, но всё равно %случайное_слово%, куча ошибок трёх разновидностей:
The object 'uniqind77' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.
The column 'col31.p2' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.
The statistics 'col17.ind5' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.
ALTER DATABASE failed. The default collation of database 'db' cannot be set to Cyrillic_General_CI_AS.

Объекты оказались ключами уникальности, колонки были все COMPUTED, там где statistics - оказался внезапно индекс. Всё дропнул к чертям.
Но и тут не %случайное_слово%, теперь такое:
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'sys.syscolpars' and the index name 'bz'. The duplicate key value is (Week, 1727470797, 0).
ALTER DATABASE failed. The default collation of database 'db' cannot be set to Cyrillic_General_CI_AS.

Я уже выдохся... Помогите кто-то...
26 янв 14, 10:05    [15470177]     Ответить | Цитировать Сообщить модератору
 Re: Нужно изменить COLLATION у DATABASE с кучей данных. Брыкается. =(  [new]
invm
Member

Откуда: Москва
Сообщений: 9833
Вы надеетесь, что сменив collation БД, collation столбцов таблиц так же автоматом изменится? Не будет такого.
Sad Ed
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'sys.syscolpars' and the index name 'bz'. The duplicate key value is (Week, 1727470797, 0).
БД у вас битая. Для начала прогоните dbcc checkdb.
26 янв 14, 10:43    [15470216]     Ответить | Цитировать Сообщить модератору
 Re: Нужно изменить COLLATION у DATABASE с кучей данных. Брыкается. =(  [new]
Sad Ed
Guest
Нет, не надеюсь. =)
Но для начала-то хоть бы DATABASE COLLATE сменить, а то же даже он не меняется.
DBCC results for 'db'.
...
DBCC results for 'sys.syscolpars'.
There are 4551 rows in 139 pages for object "sys.syscolpars".
...
CHECKDB found 0 allocation errors and 0 consistency errors in database 'db'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
26 янв 14, 11:10    [15470244]     Ответить | Цитировать Сообщить модератору
 Re: Нужно изменить COLLATION у DATABASE с кучей данных. Брыкается. =(  [new]
invm
Member

Откуда: Москва
Сообщений: 9833
А текущий collation наверное регистрозависимый?
26 янв 14, 11:53    [15470320]     Ответить | Цитировать Сообщить модератору
 Re: Нужно изменить COLLATION у DATABASE с кучей данных. Брыкается. =(  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Sad Ed,

А до этого коллэйшен был регистрозависимый? Берем объект 1727470797. Смотрим какие у него имена стобцов.
26 янв 14, 11:55    [15470324]     Ответить | Цитировать Сообщить модератору
 Re: Нужно изменить COLLATION у DATABASE с кучей данных. Брыкается. =(  [new]
Sad Ed
Guest
Cyrillic_General_BIN2
Это объект? Я думал значение. Может по 'bz' искать?

Пересоздам-ка что ли все view... Пока думает и в магазин успею, и пообедать... =)
26 янв 14, 12:03    [15470336]     Ответить | Цитировать Сообщить модератору
 Re: Нужно изменить COLLATION у DATABASE с кучей данных. Брыкается. =(  [new]
invm
Member

Откуда: Москва
Сообщений: 9833
У вас происходит примерно такое:
use tempdb;
create database TestCol collate Cyrillic_General_CS_AS;
go

use TestCol;
go

create table dbo.Test
(
 [Week] int,
 [week] int
)
go

alter database TestCol collate Cyrillic_General_CI_AS;
go

use tempdb;
drop database TestCol;
go
26 янв 14, 12:04    [15470340]     Ответить | Цитировать Сообщить модератору
 Re: Нужно изменить COLLATION у DATABASE с кучей данных. Брыкается. =(  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Sad Ed
Это объект?


Да. Получите его имя с помощью OBJECT_NAME(1727470797).

Сообщение было отредактировано: 26 янв 14, 12:07
26 янв 14, 12:06    [15470346]     Ответить | Цитировать Сообщить модератору
 Re: Нужно изменить COLLATION у DATABASE с кучей данных. Брыкается. =(  [new]
Sad Ed
Guest
Нашёл гада)) И именно этот случай и был, точно)
Спасибо огромное вам!
26 янв 14, 12:16    [15470368]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить