Как получить выходные данные из инструкции EXEC в переменную (вызов процедуры на связанном сервере MySQL) - PullRequest
1 голос
/ 26 сентября 2011

Я могу вызвать процедуру на связанном сервере (MySQL) из Sql2k5.Процедура возвращает одну строку, один столбец:

declare @Statement nvarchar(200)
set @Statement = 'call database.procedure(''some string'');'
exec (@Statement) at [linkedserver] 

... результаты:

some string

Теперь мне нужно установить переменную на значение, возвращаемое процедурой

Я нашел несколько связанный пост здесь .

, но когда я пытаюсь вставить выполненные результаты:

insert into sometable exec (@Statement) at [linkedserver] 

Я получаю эту ошибку:

OLE DB provider "MSDASQL" for linked server "linkedserver" returned message "[MySQL][ODBC 5.1 Driver]Optional feature not supported".
Msg 7391, Level 16, State 2, Line 3
The operation could not be performed because OLE DB provider "MSDASQL" for linked server "linkedserver" was unable to begin a distributed transaction.

Есть ли способ обойти это или гораздо лучший способ достичь этих результатов?

Спасибо,

1 Ответ

1 голос
/ 27 сентября 2011

Связанные серверы - это настоящая боль, особенно когда метаданные облажаются.«Вставка» - это распределенная транзакция, независимо от того, используете ли вы BEGIN / COMMIT TRAN (вставки вызывают использование журнала).Вы уже пробовали OPENQUERY?Или попробуйте следующие идеи:

http://www.sqlservercentral.com/Forums/Topic714869-338-1.aspx#bm716699

Обратите внимание на параметры поставщика и связанного сервера по следующей ссылке: http://www.infi.nl/blog/view/id/4/How_To_MySQL_as_a_linked_server_in_MS_SQL_Server

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...