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

Откуда: Башкортостан
Сообщений: 165
Добрый день.
Есть необходимость передавать данные из сервера MSSQL в MySQL.

MS SQL
select SERVERPROPERTY ('collation')
Result: Cyrillic_General_CI_AS

MySQL

mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | utf8   |
| character_set_connection | utf8   |
| character_set_database   | utf8   |
| character_set_filesystem | binary |
| character_set_results    | utf8   |
| character_set_server     | utf8   |
| character_set_system     | utf8   |
+--------------------------+--------+

Пробую извлечь данные.

select 
DoctorSpeciality
from openquery(reception,
'select * from reception.schedule')

В ответ кракозябры. Пробовал, как было описано в какой-то теме на данном форуме:

select 
DoctorSpeciality COLLATE Cyrillic_General_CI_AS
from openquery(reception,
'select * from reception.schedule')

Все равно не помогло. В настройках ODBC установлен UTF-8.
Что еще можно сделать, чтобы побороть несоответствие кодировок? Не хочется базу MySQL приводить к cp1251.
Спасибо заранее.
3 дек 10, 12:39    [9881003]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL, Linked MySQL  [new]
BestZvit
Member

Откуда: Гоблино
Сообщений: 2250
shaden
В настройках ODBC установлен UTF-8.

Параметры в свойствах самого линкед сервера не пробовали смотреть ?
3 дек 10, 13:05    [9881354]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL, Linked MySQL  [new]
shaden
Member

Откуда: Башкортостан
Сообщений: 165
Пробовал.
Там нет настроек кодировки.
3 дек 10, 13:08    [9881384]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL, Linked MySQL  [new]
BestZvit
Member

Откуда: Гоблино
Сообщений: 2250
shaden
Пробовал.
Там нет настроек кодировки.


А use remote collation, collation name и collation compatible ?
3 дек 10, 13:13    [9881462]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL, Linked MySQL  [new]
shaden
Member

Откуда: Башкортостан
Сообщений: 165
Игрался с этими параметрами.
Безрезультатно.
3 дек 10, 13:22    [9881541]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL, Linked MySQL  [new]
golkanavt
Member

Откуда: Pattaya
Сообщений: 46
Присоединяюсь к вопросу. Не удается получить в читабельном виде русский текст из линкованного MySQL для вставки в MSSQL 2005. В моем случае:
MS SQL
select SERVERPROPERTY ('collation')
Result: Latin1_General_CI_AS

MySQL

mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | cp1251 |
| character_set_connection | cp1251 |
| character_set_database   | utf8   |
| character_set_filesystem | binary |
| character_set_results    | cp1251 |
| character_set_server     | latin1 |
| character_set_system     | utf8   |
+--------------------------+--------+

Данные приходят в таком виде:
Мартынова Татьяна Владимировна
collate Cyrillic_General_CI_AS
не помогает
26 авг 11, 11:12    [11183321]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL, Linked MySQL  [new]
golkanavt
Member

Откуда: Pattaya
Сообщений: 46
Продолжу тему. С русским языком отчасти разобрался, если в свойствах ODBC Connector'а указать charset=cp1251 все приходит в нормальном виде. Но - слетает выборка по полю типа ENUM, конструкция вида cast(enum_field as nvarchar(10)) приводит к ошибке:
OLE DB provider 'MSDASQL' for linked server 'MySQLDB' returned data that does not match expected data length for column '[MSDASQL].type'. The (maximum) expected data length is 22, while the returned data length is 8.

Кто нибудь знает, как обойти эти грабли?
1 сен 11, 15:42    [11213413]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL, Linked MySQL  [new]
alexejs
Member

Откуда:
Сообщений: 147
Из MySQL в SQL Server знаю.
Обратно - нет :(
2 сен 11, 18:57    [11220618]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL, Linked MySQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
golkanavt
Продолжу тему. С русским языком отчасти разобрался, если в свойствах ODBC Connector'а указать charset=cp1251 все приходит в нормальном виде. Но - слетает выборка по полю типа ENUM, конструкция вида cast(enum_field as nvarchar(10)) приводит к ошибке:
OLE DB provider 'MSDASQL' for linked server 'MySQLDB' returned data that does not match expected data length for column '[MSDASQL].type'. The (maximum) expected data length is 22, while the returned data length is 8.

Кто нибудь знает, как обойти эти грабли?

Конвертировать ваш ENUM внутри запроса openquery к типу, который понятен MSSQL
2 сен 11, 19:02    [11220644]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить