My Sql server SQL like this:
update mysqlEmp
set first_name=FirstName
FROM OPENQUERY(NTEMYSQL,'select * from data_source_db.employees') mysqlEmp
INNER JOIN Employee on Employee.ID=mysqlEmp.id_number
WHERE CONVERT(date,Employee.Editdate) between '2018-09-19' AND '2018-09-26'
AND (mysqlEmp.first_name!=Employee.FirstName)
and employee.id='A0002779'
It will show errer:
OLE DB provider "MSDASQL" for linked server "NTEMYSQL" returned message "Row cannot be located for updating. Some values may have been changed since it was last read.". Msg 7343, Level 16, State 4, Line 3 The OLE DB provider "MSDASQL" for linked server "NTEMYSQL" could not UPDATE table "[MSDASQL]". The rowset was using optimistic concurrency and the value of a column has been changed after the containing row was last fetched or resynchronized.
If I select the first_name using OPENQUERY (in sql server)
select first_name from OPENQUERY(NTEMYSQL,N'select * from
data_source_db.employees') mysqlEmp
where id_number='A0002779'
result : PHILIP NI?O
If I select the first_name in Mysql
select first_name from data_source_db.employees where id_number ='A0002779'
I think the Special characters make my sql update errer
--Sql Server : column "FirstName" Type: nvarchar
--My sql: column "first_name" Type: utf8mb4_unicode_ci
How do I solve this problem?