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

Откуда: Москва
Сообщений: 97
Есть сервер
Microsoft SQL Server  2000 - 8.00.2040 (Intel X86)   May 13 2005 18:33:17   Copyright (c) 1988-2003 Microsoft Corporation  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 

Через ODBC
MySQL ODBC 5.1 Driver ver 5.01.08.00

подключается к MySQL
protocol_version	10
version	5.1.41-3ubuntu12.10-log
version_comment	(Ubuntu)
version_compile_machine	x86_64
version_compile_os	debian-linux-gnu


Пытался сложить данные из двух таблиц MySQL во временную, добавив в этой временной таблице поле Shop int и заполнив его 1 и 2 для этих таблиц. С 1 работало, с 2 — нет. Начали локализовывать проблему, сократились до одного поля, проблема осталась.

CREATE TABLE #TEN1 (Shop int)
INSERT INTO #TEN1 (Shop) SELECT * FROM OPENQUERY(TENTH,'SELECT 1 as Shop UNION ALL SELECT 2 as Shop')
SELECT * FROM #TEN1
DROP TABLE #TEN1

PRINT 'TEN1' -- это печатается

CREATE TABLE #TEN2 (Shop int)
DECLARE @Query nvarchar(4000)
SELECT @Query = N'SELECT * FROM OPENQUERY(TENTH,''SELECT 1 as Shop UNION ALL SELECT 2 as Shop'')'
--EXEC SP_ExecuteSQL @Query -- этот коммент можно снять, сразу начинает всё работать
INSERT INTO #TEN2 (Shop) EXEC SP_ExecuteSQL @Query
SELECT * from #TEN2
DROP TABLE #TEN2

PRINT 'TEN2'


Результаты:
Рекордсет
1
2


Сообщения
(2 row(s) affected)


(2 row(s) affected)

TEN1
Server: Msg 7391, Level 16, State 1, Line 1
The operation could not be performed because the OLE DB provider 'MSDASQL' was unable to begin a distributed transaction.
[OLE/DB provider returned message: [MySQL][ODBC 5.1 Driver]Optional feature not supported]
OLE DB error trace [OLE/DB Provider 'MSDASQL' ITransactionJoin::JoinTransaction returned 0x8004d00a].


Если снять комментарий, появляется лишний рекордсет, но ошибка исчезает. Вернул комментарий — ошибка не вернулась.
Радостный сунулся в основной код, добавил коммент, ошибка исчезла. Но потом снова появилась.
Пытался дальше локализовать, либо оставить работать так — ошибка снова временами появляется, сил на локализацию причин уже не хватает.

Подскажите, может кто сталкивался? Или копать куда-то?
11 мар 12, 20:27    [12227931]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с записью во временную таблицу при использовании OPENQUERY к MySQL  [new]
Хоббит маг
Member

Откуда: Москва
Сообщений: 97
Переломал всю голову, но в решении проблемы не сдвинулся ни на йоту.
13 мар 12, 11:48    [12237384]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с записью во временную таблицу при использовании OPENQUERY к MySQL  [new]
Хоббит маг
Member

Откуда: Москва
Сообщений: 97
В OPENQUERY используется динамический запрос, чтоб сделать выборку из двух таблиц, не грузить их полностью. Может есть другие варианты?
13 мар 12, 14:18    [12239055]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с записью во временную таблицу при использовании OPENQUERY к MySQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Хоббит маг
Переломал всю голову, но в решении проблемы не сдвинулся ни на йоту.

А вы знаете, что такое distributed transaction ?

Что дает
exec sp_configure 'remote proc trans'
13 мар 12, 14:21    [12239088]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с записью во временную таблицу при использовании OPENQUERY к MySQL  [new]
Хоббит маг
Member

Откуда: Москва
Сообщений: 97
Не понял вопроса и пытался изучить распределённые транзакции. Только запутался.
А потом мне подсказали, что нужно было выполнить и показать результат:
name	minimum	maximum	config_value	run_value
remote proc trans	0	1	0	0
14 мар 12, 19:09    [12248704]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с записью во временную таблицу при использовании OPENQUERY к MySQL  [new]
Хоббит маг
Member

Откуда: Москва
Сообщений: 97
Что почитать по распределённым транзацкиям (желательно, как можно меньше)? Или может кто посоветовать, что сделать, чтоб наиболее быстро всё заработало без особых костылей?
28 мар 12, 18:33    [12329458]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить