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

Откуда:
Сообщений: 864
Здравствуйте.

На MSSQL настроен LinkedServer до MySQL.

Нормально проходит такой запрос:

   select * from openquery (mysql, 'select * from otrs.dynamic_field')


а вот как мне обновить поле config в таблице "dynamic_field" на MySQL-сервере не знаю.
Обновлять нужно именно с MSSQL сервера т.к. в нём собирается итоговое значение для записи в "config"

Подскажите пожалуйста, каким запросом это можно сделать?
28 ноя 17, 15:31    [20988676]     Ответить | Цитировать Сообщить модератору
 Re: Обновить поле таблицы MySQL из запроса с MSSQL сервера?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
MAULER,

UPDATE OPENQUERY см. справку.
28 ноя 17, 16:20    [20988840]     Ответить | Цитировать Сообщить модератору
 Re: Обновить поле таблицы MySQL из запроса с MSSQL сервера?  [new]
MAULER
Member

Откуда:
Сообщений: 864
Спасибо.
Запрос видимо будет выглядеть так:

declare @res nvarchar(max)

select @res = 'some words etc'

update openquery (mysql, 'select config from otrs.dynamic_field where id = 70')
       set config = @res;


но вываливает ошибку: Operand type clash: nvarchar(max) is incompatible with image

Поле "config" в таблице MySQL имеет тип longblob. Как то можно закастовать это перед апдейтом?
28 ноя 17, 18:51    [20989317]     Ответить | Цитировать Сообщить модератору
 Re: Обновить поле таблицы MySQL из запроса с MSSQL сервера?  [new]
MAULER
Member

Откуда:
Сообщений: 864
Какая то ерунда:

Делаю так:
update openquery (mysql, 'select config from otrs.dynamic_field where id = 70')
       set config = '---';


Вываливается в ошибку:

OLE DB provider "MSDASQL" for linked server "mysql" returned message "Insufficient key column information for updating or refreshing.".
Msg 7343, Level 16, State 4, Line 19
The OLE DB provider "MSDASQL" for linked server "mysql" could not UPDATE table "[MSDASQL]".
28 ноя 17, 19:10    [20989354]     Ответить | Цитировать Сообщить модератору
 Re: Обновить поле таблицы MySQL из запроса с MSSQL сервера?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33258
Блог
exec ('update...') at mysql
28 ноя 17, 21:19    [20989550]     Ответить | Цитировать Сообщить модератору
 Re: Обновить поле таблицы MySQL из запроса с MSSQL сервера?  [new]
MAULER
Member

Откуда:
Сообщений: 864
Критик,

Поборол ошибку по другому.
Достаточно во внутреннем запросе, кроме поля "config" вывести ещё и id

update openquery (mysql, 'select config, id from otrs.dynamic_field where id = 70')
       set config = @res;


Теперь всё апдейтится, но возникла проблема кодировок. В таблицу MySQL строка почему то прилетает какой то странной. Она разряжена пробелами. Т.е. вместо: "12345abcdef" записывается "1 2 3 4 5 a b c d e f"
28 ноя 17, 21:24    [20989558]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить