Обновите MySql с сервера MS SQL

Мне нужна помощь в написании запросов, которые будут обновлять таблицы MySql с SQL-сервера. Я создал связанный сервер, и некоторые запросы работают нормально, но при обновлении возникают ошибки. Я новичок в написании таких запросов, поэтому, пожалуйста, помогите мне понять сообщение об ошибке и его значение.

Мой запрос на обновление:

UPDATE openquery(stagedb_za, 'Select acm_flag FROM aol_center WHERE nid = 6439')
Set acm_flag = 'P' 

Ошибка:

Поставщик OLE DB «MSDASQL» для связанного сервера «stagedb_za» вернул сообщение «Строка не может быть найдена для обновления. Некоторые значения могли быть изменены с момента последнего чтения». Msg 7343, уровень 16, состояние 4, строка 1 Поставщику OLE DB «MSDASQL» для связанного сервера не удалось ОБНОВИТЬ таблицу «[MSDASQL]». В наборе строк использовался оптимистичный параллелизм, и значение столбца было изменено после последней выборки или повторной синхронизации содержащейся строки.


person pramodtech    schedule 13.03.2012    source источник


Ответы (2)


Вся эта проблема устраняется настройкой коннектора MySQL ODBC.

На сервере SQL, который связан с MySQL, перейдите на экран настройки соединения MySQL ODBC, которое используется связанным сервером. Откройте «Подробности». На вкладке «курсор / результаты». Установите флажок «Вернуть совпадающие строки вместо затронутых строк».

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

Прежде чем я обнаружил это на другом форуме, я вложил МНОГО кода, чтобы отфильтровать недопустимые значения по каждому полю. Это легко.

person Tom Shindler    schedule 26.08.2014

Хорошо, я получил ответ. Похоже, что когда вы обновляете значение столбца, и если новое значение совпадает с существующим, оно обрабатывается, поскольку изменений нет, поэтому обновления не произойдет.

В моем случае я обновлял acm_flag до «P», но его значение уже было «P», поэтому обновления не произошло. Когда я попытался обновить его до другого значения, он работал нормально.

person pramodtech    schedule 14.03.2012