You may be fighting an uphill battle. You talk to an OLE DB provider that talks to an ODBC driver that talks to MySQL. With that many components involved, it can be very difficult to say where things went wrong.
On top of that, to get good help, you need to find people who know both environments, and the ODBC driver. Myself, I have never worked with linked servers against MySQL. But two things to try/check:
- Is job_agreement_id defined as a primary key?
- What happens if you leave out job_agreement_id from the SET clause?
You may have better luck with EXEC AT:
EXEC('UPDATE `your table`
SET job_agreement_id = ?,
bms_job_agreement_id = ?
WHERE job_agreement_id=?',
@new_job_agreement_id, @new_bms_job_agreement_id, @old_job_agreement_id)
AT [SRV-ORCHID]
For this to work, you need to run
EXEC sp_serveroption 'SRC-ORCHID', 'rpc out', 'true'