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

Откуда: Ленинградская область
Сообщений: 128
Добрый день.

Все БД под моим MS SQL Server 2008 R2 имеют Collation Cyrillic_General_CI_AS
Но одна имеет SQL_Latin1_General_CP1_CI_AS (почему так не знаю, прислали бакап базы, наверное была создана на английской версии MS SQL Server).
Вопрос - можно ли какой-то командой TSQL программно сменить кодировку у данной БД на Cyrillic_General_CI_AS ?
Или лучше выдать сообщение на уровне приложения с предложением зайти в "SQL Server Management Studio" и изменить вручную в параметрах?

Заранее спасибо.
26 мар 13, 20:30    [14098920]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то изменить Collation у БД?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Сменить коллейшен бд одной инструкцией T-SQL можно. Но этого недостаточно, ибо надо как минимум менять коллейшен всех "текстовых" столбцов во всех таблицах. А тут могут быть нюансы...
26 мар 13, 20:34    [14098924]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то изменить Collation у БД?  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Integrator2,

Сменить коллейшн у БД не так-то просто, ограничения просто драконовские. Подробнее тут, раздел "Изменение параметров сортировки в базе данных".
26 мар 13, 21:40    [14099054]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то изменить Collation у БД?  [new]
Integrator2
Member

Откуда: Ленинградская область
Сообщений: 128
Т.е. в "SQL Server Management Studio" мы можем изменить collation в свойствах БД без проблем, а для программеров "драконовские ограничения". Н-да.
Спасибо.
27 мар 13, 09:56    [14100117]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то изменить Collation у БД?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Integrator2
Т.е. в "SQL Server Management Studio" мы можем изменить collation в свойствах БД без проблем, а для программеров "драконовские ограничения".

SQL Server Management Studio не делает ничего такого, чего не может сделать программер. Другое дело, что программер просто не знает, что делать.
Главное не путать "collation в свойствах БД" с collation уже созданных объектов
27 мар 13, 10:18    [14100199]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то изменить Collation у БД?  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Integrator2
Т.е. в "SQL Server Management Studio" мы можем изменить collation в свойствах БД без проблем, а для программеров "драконовские ограничения". Н-да.
Спасибо.
С чего это вы так решили? Студия не общается с сервером каким-либо магическим образом.
27 мар 13, 10:20    [14100216]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то изменить Collation у БД?  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Кстати
use master;
create database TestDB;
go

use TestDB;
go

create table dbo.TestTable (i int constraint CK_TestTable__i check (i > 0));
go

alter database TestDB collate Latin1_General_CI_AS;
go
 
use master;
drop database TestDB;
go
Получаем ошибку
Msg 5075, Level 16, State 1, Line 2
The object 'CK_TestTable__i' 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.
Msg 5072, Level 16, State 1, Line 2
ALTER DATABASE failed. The default collation of database 'TestDB' cannot be set to Latin1_General_CI_AS.
Кто-нибудь может объяснить, каким образом это констраинт зависит от коллейшена БД?

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4263.0 (X64)   Aug 23 2012 15:56:56   Copyright (c) Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2) 

Microsoft SQL Server 2012 (SP1) - 11.0.3339.0 (X64)
Jan 14 2013 19:02:10
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
27 мар 13, 10:32    [14100299]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить