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

Откуда:
Сообщений: 40
Имеем SQL Server 2000 с двумя десятками баз и кучей логинов. Надо поменять collation у сервера, причем сделать это быстро. Если переустановить сервер, а затем просто присоединять базы – остаемся без логинов. Я думал про бэкап базы master с последующим ее восстановлением на новом сервере, но ведь collation уже другая будет! Что делать?
15 апр 04, 09:00    [629839]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37100
https://www.sql.ru/forum/actualtopics.aspx?search=%EF%E5%F0%E5%ED%EE%F1+%EB%EE%E3%E8%ED%EE%E2&submit=%CD%E0%E9%F2%E8&bid=1
15 апр 04, 09:50    [629944]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
madprogrammer
Member

Откуда:
Сообщений: 40
Спасибо за ответ, однако это я видел. То, что восстановить на новом сервере базу master это ясно, однако collation-то другая!
С меня голову снимут если что...
15 апр 04, 10:09    [629984]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
Alexes
Member

Откуда:
Сообщений: 1100
Есть такая стандартная утилита: rebuildm.exe
15 апр 04, 10:13    [629992]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37100
Есть утилита, которая collation меняет у сервера. Как называется - не помню, поищите по форуму.
15 апр 04, 10:13    [629993]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
v0id
Member

Откуда:
Сообщений: 42
была та же проблема..

не знаю как нужно было действовать - сделал что первое в голову пришло..
поменял коллэшн нужным базам, а потом сделал курсор по соостветствующим полям в syscolumns - там где были чаровидные поля - просто мутил динамически:
set @cmd = 'ALTER TABLE ' + @tablename + ' ALTER COLUMN ' + @columname + ' COLLATE ...'
sp_execeute @cmd

и пошёл гулять пока эта байда работала.. причём - без бэкапов/ресторов и по ходу дня никто ничего не заметил..

если подскажете более правильный вариант - учту на следующий раз..
15 апр 04, 10:19    [630007]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
ilych
Member

Откуда: Казань
Сообщений: 5
use [master]


sp_configure 'allow updates', 1
reconfigure with override
go
update syscolumns
set syscolumns.[collation] = N'Cyrillic_General_CI_AS',
collationid = 53269
WHERE (syscolumns.[collation] = N'SQL_Latin1_General_CP1251_CI_AS')


поменяются все поля всего сервера
15 апр 04, 10:45    [630066]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
v0id
Member

Откуда:
Сообщений: 42
да, кстати была у меня идея предложенная ильичём сначала..

но потом решил что спокойнее и безопаснее не будет напрямую менять системные таблицы, а воспользоваться стандартными командами

если же уверен, что ALTER TABLE .. ALTER COLUMN .. COLLATE меняет только это поле в syscolumns, то - вперёд.. мне просто казалось что там есть ещё всяки id.. а может ещё что-то в других таблицах.. а может ещё походу и конвертирует содержимое полей (потому как ALTER COLUMN не выполняется мгновенно..)
15 апр 04, 11:06    [630117]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
Crimean
Member

Откуда:
Сообщений: 13148
У меня в свое время не получилось сменить коляции данным , уже сидящим в таблицах . Таки переставлял сиквел .
15 апр 04, 11:13    [630138]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
v0id
Member

Откуда:
Сообщений: 42
у меня буквально две недели назад была такая проблема.. и ALTER..... - справился с ней вполне - без проблем
15 апр 04, 11:33    [630203]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
madprogrammer
Member

Откуда:
Сообщений: 40
Спасибо всем за ответы, даже не знаю, каким воспользоваться...
А насколько корректен вариант, предложенный Ильичем? Просто до меня не доходит разница (хотя я знаю, что она есть) между collation сервера и collation конкретной базы.
15 апр 04, 12:14    [630316]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Давайте все-таки уясним - в чем ваша проблема ?
Вам нужно каким-то образом сохранить login-ы от предыдущей установки сервера ?
15 апр 04, 12:15    [630323]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
madprogrammer
Member

Откуда:
Сообщений: 40
Ну вообще у меня как бы есть _работающий_ сервер. На котором туева хуча баз, логинов, ролей и тому подобной требухи. Сервер имеет Cyrillic_General_Bin, а мне надо, чтобы он нечуствительным к регистру был. Для всех баз. Т.е. мне нужно поменять collation, оставив все как есть. Вот я и ищу наиболее быстрый и безопасный вариант для решения оной задачи.
15 апр 04, 12:21    [630343]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
madprogrammer
Member

Откуда:
Сообщений: 40
Для всех баз
ЗЫ: И для новых в том числе.
15 апр 04, 12:28    [630363]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
v0id
Member

Откуда:
Сообщений: 42
коллэшн сервер и баз просто оперделяет то с каким коллэшином будут создаваться вниз по иерархии объекты если для них при создании не определять специально коллэшн, а оставлять по умолчанию..

так база будет создаваться с коллэшином каков стоит у сервера..
а таблица в базе - с коллэшинм стоящим у базы..
а столбцы - с коллэшином в таблице..
если всё это не определять специально при создании..

смена коллэшна на любом уровне будет определять - как будут создаваться новые объекты.. а созданные же до этого будут оставаться такими как были определны ранее..

как я менял коллэшины - написал раньше.. у меня получилось.. о другом способе я не знаю - просто не приходилось сталкиваться..
15 апр 04, 12:35    [630378]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
Alexes
Member

Откуда:
Сообщений: 1100
Для этого нужно сделать то, что говорил v0id.
Затем сделать ALTER DATABASE ... COLLATE ...
И в конце концов сделать rebuild master
15 апр 04, 12:37    [630386]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Т.е. задач на самом деле 2

1. Сменить collation-ы у всех объектов всех пользовательских баз
2. Сменить default collation сервера.

Для 1-ой задачи кроме предложенных выше вариантов могу посоветовать
- скриптуем все объекты базы
- изменяем в скрипте все ссылки на collation
- выкачиваем данные в текстовые файлы
- создаем новую базу с помощью модифицированного скрипта
- закачиваем в нее данные из текстовых файлов

Для 2-ой задачи ничего кроме переустановки сервера(или rebuildm.exe) не существует.
Проблема login-ов сводится к задаче их скриптования. Пример процедуры, проделывающей, это наверняка можно найти в предложенной выше ссылке.
Как вариант можно предварительно скопировать базу master. И потом, присоедив ее к новому серверу как пользовательскую, можно на основе https://www.sql.ru/articles/mssql/02080601TransferLoginsandPasswordsBetweenSQLServers.shtml#4 перенести логины в новую базу master
15 апр 04, 12:37    [630387]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
SeVa
Member [заблокирован]

Откуда: Москва
Сообщений: 4324
Microsoft Knowledge Base Article - 325335
How to transfer a database from one collation to another collation in SQL Server

http://support.microsoft.com/default.aspx?scid=kb;en-us;325335
15 апр 04, 13:51    [630635]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
madprogrammer
Member

Откуда:
Сообщений: 40
автор

так база будет создаваться с коллэшином каков стоит у сервера..
а таблица в базе - с коллэшинм стоящим у базы..
а столбцы - с коллэшином в таблице..
если всё это не определять специально при создании..


Тады обьясните мне, уважаемые, почему в хранимой процедуре есть разница между переменными @a и @A, когда:
Сервер: Cyrillic_General_Bin
База, где эта хранимая процедура – Cyrillic_General_CI_AS
?
15 апр 04, 16:07    [631126]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
v0id
Member

Откуда:
Сообщений: 42
глупый вопрос:
обе буквы латинские? ;)
был случай очень похожий.. только программа была на с++.. и не помню с какого перепугу переключился на русский язык и тоже вставил переменную тип "а" или "с".. потом долго компилируется.. особенно если заполночь дело..
15 апр 04, 16:33    [631205]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
v0id
Member

Откуда:
Сообщений: 42
кстати, вот случайно наткнулся:

SQL Server 2000 collations can be specified at many levels. When you install an instance of SQL Server 2000, you specify the default collation for that instance. Each time you create a database, you can specify the default collation used for the database. If you do not specify a collation, the default collation for the database is the default collation for the instance. Whenever you define a character column, you can specify its collation. If you do not specify a collation, the column is created with the default collation of the database. You cannot specify a collation for character variables and parameters; they are always created with the default collation of the database.
(с) BOL

а чтоб collation хоть как влиял на регистр переменных не слышал ни разу..
15 апр 04, 16:37    [631222]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пути решения проблемы, плз (+)  [new]
madprogrammer
Member

Откуда:
Сообщений: 40
Так вот в том то и фишка, что на одном из серверов все ок, а у меня "Must declare variable @A".
16 апр 04, 07:06    [631973]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить