Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Принимает ли MS SQL Server русский язык?


Автор: Lobsang 18.5.2003, 14:15
Почему при вставке в таблицу БД (MS SQL Server 2000) слов на русском используя Query Analyzer или написанную программу - получаем кучу знаков ? вместо букв. Но при вставке из Server Enterpriise Manager - русские слова сохраняются в нормальном виде.
Что-то здесь с настройками Виндов. Может кто знает.
Видел подобный вопрос - там ответом было мол "что-то в кодировке",
может скажете что нужно изменить что бы кодировка была нормальной?
Win2000 Server
Русский - задан как регион.
Кодировка - KOIR-8

Автор: Lobsang 19.5.2003, 06:23
Все он понимает. Это у кого-то руки не из того места растут smile.gif
Все дело в настройках COLLATE - где задаются параметры языка БД при ее создании.
Список всех Колэйшенов можно получить
SELECT *
FROM ::fn_helpcollations()

Автор: lynx20005 12.3.2005, 15:11
В свое время столкнулся с такой проблемой:
Да, на самом деле, всё заключалось в свойстве COLLATE.

Выход:
выполнить такой SQL-запрос:

ALTER DATABASE <имя ДБ> COLLATE Cyrillic_General_CI_AS

и всё работает.

Автор: adamant 24.4.2006, 05:32
А у меня не заработало!

отправляю ALTER DATABASE <имя ДБ> COLLATE Cyrillic_General_CI_AS

потом делаю форму при нажатии go в таблицу вставляеться русский текст, потом загружаю этот текст а там всё авно иероглифы...
что делать? 

Заработало только криво, например не правельно даёт эти символы:

ё, щ, ы, ю... Как именно от этого избавиться? 

Автор: ALKS 24.4.2006, 11:45
Цитата(lynx20005 @ 12.3.2005,  15:11)
В свое время столкнулся с такой проблемой: 
Да, на самом деле, всё заключалось в свойстве COLLATE.

Выход:
выполнить такой SQL-запрос:

ALTER DATABASE <имя ДБ> COLLATE Cyrillic_General_CI_AS

и всё работает.

не правда. COLLATE на базе данных это COLLATE по-умолчанию. они применяться при создании новых таблиц если в запросе на создание явно не указан COLLATE для столбца. Если таблица уже создана то тот факт что изменялся COLLATE по-умолчанию на базе для уже существующих таблиц ничего не изменит. чтобы сменить COLLATE нужно либо пересоздать все таблицы либо сделать ALTER с нужным COLLATE у нужных вам столбцов типа char/varchar. В последнем случае вы по-сношаетесь по-полной потому, что например если два столбца двух таблиц участвующие в Foreign Key то они  должны иметь один и тотже COLLATE. В примведенном примере придеться уничтожать констреинт, менять COLLATE у столбцов и потом создавать констреин снова. Вообщем гемор ещё тот. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)