Как обновить данные из mssql в mysql на связанном сервере - PullRequest
0 голосов
/ 24 сентября 2018

Поставщик OLE DB "MSDASQL" для связанного сервера "MYLINKEDSERVER" вернул сообщение "Невозможно найти строку для обновления. Некоторые значения могли быть изменены с момента последнего чтения.".

Msg 7343, Level 16, State 4, Line 1
The OLE DB provider "MSDASQL" for linked server "MYLINKEDSERVER" could not UPDATE table "[MSDASQL]". 

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

DECLARE @Counter nvarchar(1024),
        @TSQL varchar(8000)

SET @Counter = 0

WHILE (@Counter <=(select Top 1 ID from mydb.dbo.tbl1 order by ID desc))

BEGIN

    set nocount on

    IF EXISTS(select Top 1 ID from mydb.dbo.tbl1 where ID = @Counter)

    BEGIN

        SELECT  @TSQL   = 'UPDATE OPENQUERY(MYLINKEDSERVER,''select * from mydb2.tbl2 where tbl1_id is not null and tbl1_id= ' + @Counter + ''')' + 'set employees = ' + CAST((select t.employees from mydb.dbo.tbl1 as t where t.ID = @Counter) as nvarchar)

        EXEC (@TSQL)
        SELECT @Counter=@Counter+1
    END

    ELSE BEGIN

        SELECT @Counter=@Counter+1

    END

END

1 Ответ

0 голосов
/ 12 апреля 2019

Дополнительные параметры драйвера ODBC.Пометить не кешировать результат только для foward ... LFag при возврате соответствует строка ...

...