Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
foxtv
Member

Откуда:
Сообщений: 108
Версия: 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)". При пересоздании подписчика всё опять в течении часа работает отлично, но потом появляется ошибка.

Помогите пожалуйста в чём может быть проблема?
4 фев 13, 11:04    [13870951]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Проблема в кривом драйвере ODBC.
4 фев 13, 11:36    [13871157]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
foxtv
Member

Откуда:
Сообщений: 108
invm
Проблема в кривом драйвере ODBC.

А есть не кривые? 5.1? 5.2?
4 фев 13, 12:33    [13871597]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
foxtv
А есть не кривые?
Не знаю. На момент, когда я пытался поднять репликацию с мускульным подписчиком (лет 10 назад), не было. Так что выяснять придется экспериментальным путем.
4 фев 13, 13:30    [13872079]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
foxtv
Member

Откуда:
Сообщений: 108
invm
foxtv
А есть не кривые?
Не знаю. На момент, когда я пытался поднять репликацию с мускульным подписчиком (лет 10 назад), не было. Так что выяснять придется экспериментальным путем.


А через linked server и триггеры тоже есть какие-то проблемы?
4 фев 13, 14:11    [13872434]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
foxtv
А через linked server и триггеры тоже есть какие-то проблемы?
Во-первых, это очень плохая практика.
Во-вторых, думаю, что проблемы весьма вероятны.
4 фев 13, 14:21    [13872501]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3274
foxtv
А через linked server и триггеры тоже есть какие-то проблемы?
А какая разница? Что для репликации вам нужен драйвер, что для линкед-сервера. Если он кривой (а других я для мускула не видел), то рано или поздно он и в линке сыграет.

Гарантированно решить вашу проблему может только отказ от MySQL гетерогенной архитектуры.
4 фев 13, 14:32    [13872590]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
foxtv
Member

Откуда:
Сообщений: 108
автор
Гарантированно решить вашу проблему может только отказ от 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.
4 фев 13, 16:36    [13873517]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
foxtv,

Трюк с убиением MSRepl7 может сработать, а может и нет. Если сработает, то все равно нет гарантии отсутствия проблем в дальнейшем. Гетерогенная репликация, особенно через кривые драйвера, -- вещь непредсказуемая.
4 фев 13, 17:12    [13873789]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
foxtv
Member

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


Если сталкивались подскажите:
1. Как создать (replication alert for error).
2. И перезагрузить агента (restarting the distribution agent).
4 фев 13, 17:30    [13873932]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
foxtv
1. Как создать (replication alert for error).
Алерт создается с помощью процедуры sp_add_alert. Только нужно знать сиквельный код ошибки. 24000 -- это код ошибки ODBC.
foxtv
2. И перезагрузить агента (restarting the distribution agent).
Это делается либо в Replication monitor, либо просто рестартовать соответствующий джоб.
4 фев 13, 17:49    [13874072]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
foxtv
Member

Откуда:
Сообщений: 108
А как удалить таблицу на стороне MySql ?

SELECT * FROM OPENQUERY([125], 'DROP TABLE rgb.MSrepl7') - это не работает.
5 фев 13, 11:02    [13876160]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
foxtv
А как удалить таблицу на стороне MySql ?

SELECT * FROM OPENQUERY([125], 'DROP TABLE rgb.MSrepl7') - это не работает.
Примерно так:
DROP TABLE [125]..rgb.MSrepl7
5 фев 13, 11:21    [13876275]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
foxtv
Member

Откуда:
Сообщений: 108
invm
foxtv
А как удалить таблицу на стороне MySql ?

SELECT * FROM OPENQUERY([125], 'DROP TABLE rgb.MSrepl7') - это не работает.
Примерно так:
DROP TABLE [125]..rgb.MSrepl7


Не получилось :

The object name '125..rgb.' contains more than the maximum number of prefixes. The maximum is 2.
5 фев 13, 11:26    [13876320]     Ответить | Цитировать Сообщить модератору
 Re: Репликация MS SQL Server 2000 и MySql. Недопустимое состояние курсора(Error number: 24000)  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4916
Блог
Как вариант посмотрите в сторону GoldenGate репликации. Она реализована на основе непосредственного чтения журналов СУБД (в данном случае MySQL), поэтому не будет нагружать источник.
Вот здесь есть описание того, как это делает для варианта MySQL->Oracle, но для MySQL->MSSQL будет очень похоже.
Нужно только, чтобы MySQL использовал InnoDB движок.
5 фев 13, 11:40    [13876449]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить