Перестали работать распределенные транзакции между MSSQL 2000 и MySQL - PullRequest
0 голосов
/ 11 июля 2011

Мы успешно копируем данные из базы данных MySQL Slave в базу данных MSSQL.Сервер MySQL является связанным сервером.Я попытался использовать v3.51 и v5.1.8 коннектора ODBC при условии, что MySQL.

Простая попытка вставить во временную таблицу в MSSQL из таблицы в MySQL с помощью OPENQUERY вызывает следующую ошибку:

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 3.51 Driver]Optional feature not supported]
OLE DB error trace [OLE/DB Provider 'MSDASQL ' ITransactionJoin::JoinTransaction returned 0x8004d00a].

Эта ошибка начала происходить, когда репликация между ведущим и ведомым MySQL не удалась.С тех пор это было исправлено, но ошибка выше сохраняется.

Сервер MSSQL работает на сервере Windows 2003 R2, а серверы MySQL работают на серверах CentOS 5, два сервера находятся в разных центрах обработки данных и общаются с каждымдругие через OpenVPN.

Есть ли что-то еще, что нужно сделать на стороне MySQL?Любые предложения для стороны MSSQL?Я уже попытался перезапустить DTC, а также перезагрузить сервер.

Спасибо

Ответы [ 2 ]

0 голосов
/ 31 мая 2012

Если вы используете явную команду «ВЫПОЛНИТЬ», убедитесь, что на связанном сервере нет открытых транзакций.Например:

BEGIN TRANSACTION
  SP_CALL_LINKED_SERVER
...

В SP_CALL_LINKED_SERVER нельзя вызвать любую транзакцию (например: EXECUTE (LINKED_SERVER) ...), если предыдущая транзакция все еще открыта

0 голосов
/ 12 июля 2011

Наконец-то решили эту проблему. Пожалуйста, смотрите сообщение в этой статье переполнения стека: SQL Server 2000 - связанный сервер

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