Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)

foxtv
Дата: 04.02.2013 11:04:36
Версия: MS SQL Server 2000: Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 1)

ODBC Driver: ODBC MySql 3.51 Driver

Тип репликации: Snapshot

Sql agen запускается от имени пользователя созданного в операционной системе с необходимыми правами.

Проблема: не стабильная работа subscribera. В течении первого часа при создании подписчика всё работает отлично, но потом появляется ошибка: "Недопустимое состояние курсора (Source: rada_3_51 (Data source); Error number: 24000)". При пересоздании подписчика всё опять в течении часа работает отлично, но потом появляется ошибка.

Помогите пожалуйста в чём может быть проблема?
invm
Дата: 04.02.2013 11:36:12
Проблема в кривом драйвере ODBC.
foxtv
Дата: 04.02.2013 12:33:01
invm
Проблема в кривом драйвере ODBC.

А есть не кривые? 5.1? 5.2?
invm
Дата: 04.02.2013 13:30:02
foxtv
А есть не кривые?
Не знаю. На момент, когда я пытался поднять репликацию с мускульным подписчиком (лет 10 назад), не было. Так что выяснять придется экспериментальным путем.
foxtv
Дата: 04.02.2013 14:11:51
invm
foxtv
А есть не кривые?
Не знаю. На момент, когда я пытался поднять репликацию с мускульным подписчиком (лет 10 назад), не было. Так что выяснять придется экспериментальным путем.


А через linked server и триггеры тоже есть какие-то проблемы?
invm
Дата: 04.02.2013 14:21:03
foxtv
А через linked server и триггеры тоже есть какие-то проблемы?
Во-первых, это очень плохая практика.
Во-вторых, думаю, что проблемы весьма вероятны.
Ennor Tiegael
Дата: 04.02.2013 14:32:16
foxtv
А через linked server и триггеры тоже есть какие-то проблемы?
А какая разница? Что для репликации вам нужен драйвер, что для линкед-сервера. Если он кривой (а других я для мускула не видел), то рано или поздно он и в линке сыграет.

Гарантированно решить вашу проблему может только отказ от MySQL гетерогенной архитектуры.
foxtv
Дата: 04.02.2013 16:36:09
автор
Гарантированно решить вашу проблему может только отказ от MySQL гетерогенной архитектуры.


Т.е. все эти статьи не работают?
http://www.techrepublic.com/blog/howdoi/how-do-i-set-up-replication-between-microsoft-sql-server-2000-and-mysql/112

http://www.infi.nl/blog/view/id/4/How_To_MySQL_as_a_linked_server_in_MS_SQL_Server

Или же вот это и есть выход:
Unfortunately, the process of replicating between the two systems is not foolproof. Every time the connection between the systems is broken (whether by rebooting, network problems, or simply not running the distribution agent continuously), you will have the possibility of receiving the dreaded Invalid Cursor State error. Luckily, there is an easy workaround. Simply create the MySQL system as a linked server (using the Microsoft OLE DB Provider for ODBC Drivers and the DSN you created). Then, create a replication alert for this error that will run a distributed transaction to the MySQL server instructing it to drop the table MSRepl7 and then restarting the distribution agent. This quick and simple fix will work wonders for your replication stability.
invm
Дата: 04.02.2013 17:12:12
foxtv,

Трюк с убиением MSRepl7 может сработать, а может и нет. Если сработает, то все равно нет гарантии отсутствия проблем в дальнейшем. Гетерогенная репликация, особенно через кривые драйвера, -- вещь непредсказуемая.
foxtv
Дата: 04.02.2013 17:30:07
invm
Трюк с убиением MSRepl7 может сработать, а может и нет. Если сработает, то все равно нет гарантии отсутствия проблем в дальнейшем. Гетерогенная репликация, особенно через кривые драйвера, -- вещь непредсказуемая.


Если сталкивались подскажите:
1. Как создать (replication alert for error).
2. И перезагрузить агента (restarting the distribution agent).