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

Откуда:
Сообщений: 271
Может кто подскажет
К SQL Server прилинкован MySQL
Выполняю запрос
update openquery (MYSQL_, 'select note from work')
SET note=REPLACE(note,char(10), '')


Возникает ошибка:
Поставщик OLE DB "MSDASQL" для связанного сервера "MYSQL_" вернул сообщение "Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения.".
Сообщение 7343, уровень 16, состояние 4, строка 1
Поставщик OLE DB "MSDASQL" для связанного сервера "MYSQL_" не может UPDATE таблицу "[MSDASQL]". В наборе строк использовался принцип оптимистичного параллелизма, и значение столбца было изменено после последней выборки или повторной синхронизации содержащей его строки.

При этом копирую этот массив в таблицу на MSSQL, выполняю:
UPDATE [work]
set note = REPLACE(note,char(10), ' ')
go

Запрос выполняется правильно, и без ошибок

В чем может быть проблема при выполнении аналогичного запроса в таблице на прилинкованом MySQL?
24 июл 15, 13:34    [17929852]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
KRS544
Member

Откуда:
Сообщений: 497
попробуйте

exec ('update work set .....') at MYSQL_
24 июл 15, 13:50    [17929970]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Посик по форуму ,Карл , поиск
24 июл 15, 13:51    [17929980]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Посик по форуму ,Карл , поиск
24 июл 15, 13:52    [17929987]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
KRS544
попробуйте

exec ('update work set .....') at MYSQL_

к сожалению, не помогло
26 июл 15, 17:37    [17935781]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Maxx, спасибо за варианты поиска по форуму. Я смотрел до создания темы. Там примеры на присвоения значения с использованием либо временной, либо постоянной таблицы
здесь
здесь
и здесь

Мне нужно не присвоить значение по ссылке на существующий массив (поэтому прикрутить временную наверное не получится), а удалить символ char(10) из этой же таблицы.
Может кто подскажет как это реализовать через OPENQUERY, буду благодарен..
26 июл 15, 17:43    [17935791]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
Glory
Member

Откуда:
Сообщений: 104751
2viper2viper
Может кто подскажет как это реализовать через OPENQUERY, буду благодарен.

Создайте PK для таблицы work
27 июл 15, 09:44    [17937625]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8485
2viper2viper,

если прилинкован, то зачем openquery?
27 июл 15, 12:51    [17938691]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Владислав Колосов
2viper2viper,

если прилинкован, то зачем openquery?
прилинкован mysql через свой драйвер. а он, насколько понимаю, работает только через openquery. по крайней мере, все примеры при работе с прилинкованным mysql через openquery
27 июл 15, 17:40    [17940891]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Glory
2viper2viper
Может кто подскажет как это реализовать через OPENQUERY, буду благодарен.

Создайте PK для таблицы work


Glory, он там есть. При чем select * from openquery (...) работает без проблем
27 июл 15, 17:44    [17940919]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
Glory
Member

Откуда:
Сообщений: 104751
2viper2viper
Glory, он там есть.

А MSSQL об этом знает ?

2viper2viper
При чем select * from openquery (...) работает без проблем

Потому, что для выброки не нужны ни ПК ни вообще какие-то индексы.
Потому что выборке в отличии от обновления, не нужно точно позиционировать каждую запись
28 июл 15, 09:44    [17943514]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Ошибка UPDATE openquery  [new]
Vadnet
Member

Откуда:
Сообщений: 2
Прошу прощения, что поднял столь старую тему.
Возникает точно такая же ошибка как у ТС в 2015 году.
Выполняю запрос с курсором (с таблицами msq sql всегда отрабатывает):
DECLARE @TSQL varchar(8000), @VAR char(10), @VAR2 char(10), @VAR3 VarChar(200),
@VAR4 VarChar(10), @VAR5 VarChar(10), @VAR6 VarChar(20) 
  DECLARE @Grup VarChar(10)
  DECLARE @Nnum VarChar(10)
  DECLARE @Name VarChar(200)
  DECLARE @Ed VarChar(10)
  DECLARE @koltek int
  DECLARE @temp VarChar(20)
  declare @cur cursor
  set @cur = cursor fast_forward for
    SELECT id_grup, nnum, name, ed, koltek, temp
      FROM table1
  OPEN @cur
  WHILE (0 = 0)
  BEGIN
    FETCH NEXT
      FROM @cur
      INTO @Grup, @Nnum, @Name, @Ed, @koltek, @temp
      IF (@@FETCH_STATUS <> 0) BREAK
      SELECT  @VAR = @Grup
      SELECT  @VAR2 = @Nnum
      SELECT  @VAR3 = @Name
      SELECT  @VAR4 = @Ed
      SELECT  @VAR5 = @koltek
      SELECT  @VAR6 = @temp
      SELECT  @TSQL = 'update OPENQUERY(mysql,''SELECT * FROM table2 WHERE id_grup = ''''' + @VAR + ''''' and nnum = ''''' + @VAR2 + ''''''')
						SET name = ''' + @VAR3 + ''',
						    ed = ''' + @VAR4 + ''',
							koltek = ''' + @VAR5 + ''',
							temp = ''' + @VAR6 + ''' 
						WHERE (id_grup = ''' + @VAR + ''') AND (nnum = ''' + @VAR2 + ''')'
      EXEC (@TSQL)
  END
  CLOSE @cur
  DEALLOCATE @cur


И снова лезет данная message:
"В наборе строк использовался принцип оптимистичного параллелизма, и значение столбца было изменено после последней выборки или повторной синхронизации содержащей его строки."

PK присутствует, id_grup + nnum = уникальны в связке, если делать апдейт на одну строку, то он отрабатывает. Тыкните носом нуба что не так? С mysql только-только начинаю пытаться дружить.
29 ноя 16, 15:12    [19947540]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Vadnet,

https://technet.microsoft.com/ru-ru/library/ms191493(v=sql.105).aspx
29 ноя 16, 15:21    [19947610]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка UPDATE openquery  [new]
Vadnet
Member

Откуда:
Сообщений: 2
TaPaK,

thanks
30 ноя 16, 14:02    [19951421]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить