OPENQUERY SQL 服务器 MYSQL 更新
OPENQUERY SQL Server MYSQL UPDATE
我必须在链接服务器上工作。我的目标:通过 SQL 服务器(版本 13.0.1742.0)中的 OPENQUERY 更新 mysql 服务器(版本:8.0.21)中的整个 table。我试过了,但它产生了一个错误 Row cannot be located for updating. Some values may have been changed since it was last read
而这个 The rowset was using optimistic concurrency and the value of a column has been changed after the containing row was last fetched or resynchronized
.
update linkedTable
set
linkedTable.id_parent=unlinkedTable.IdCat1,
linkedTable.code=unlinkedTable.CodeFamilleFAT,
linkedTable.niveau=unlinkedTable.NiveauCategorieFAT,
linkedTable.langue=unlinkedTable.CodeLangueFAT,
linkedTable.nom=unlinkedTable.LibelleCommercialFAT,
linkedTable.descriptionA=unlinkedTable.DescriptifCom1FAT,
linkedTable.vignette=null,
linkedTable.id_categorie=unlinkedTable.id
from openquery(NAMELINKEDSERVER, 'select id_categorie, id_parent, code, niveau, langue, nom, description as descriptionA, vignette from DatabaseMySQL.Table') as linkedTable
inner join DatabaseSQLserver.dbo.Table as unlinkedTable on unlinkedTable.Id = linkedTable.id_categorie
然后我试了这个:
update linkedTable
set
linkedTable.id_parent=unlinkedTable.IdCat1,
linkedTable.code=unlinkedTable.CodeFamilleFAT,
linkedTable.niveau=unlinkedTable.NiveauCategorieFAT,
linkedTable.langue=unlinkedTable.CodeLangueFAT,
linkedTable.nom=unlinkedTable.LibelleCommercialFAT,
linkedTable.descriptionA=unlinkedTable.DescriptifCom1FAT,
linkedTable.vignette=null,
linkedTable.id_categorie=unlinkedTable.id
from openquery(NAMELINKEDSERVER, 'select id_categorie, id_parent, code, niveau, langue, nom, description as descriptionA, vignette from DatabaseMySQL.Table') as linkedTable
inner join DatabaseSQLserver.dbo.Table as unlinkedTable on unlinkedTable.Id = linkedTable.id_categorie
where linkedTable.id_categorie = 1
这项工作但只更新了一行。所以我写了一个存储过程来更新每一行但是太花时间了。
有人可以解释为什么我的第一个查询不起作用(问题 1)以及如何减少存储过程的时间(问题 2)吗?
我使用 while 循环(计算 id 的数量并更新每个 id)。
提前致谢。
亲切的问候。
我通过检查 MySQL 中 ODBC 驱动程序的一些选项并阅读一些论坛来解决问题。我勾选这个框。
enter image description here
此选项可以避免前面引用的错误。使用此选项,我可以更新多个值而不会在加入或其他请求时出错。感谢 Solarflare 和“另一个人”(我忘了名字)纠正我的错误(编辑 A POST)。祝你们都有美好的一天。
我必须在链接服务器上工作。我的目标:通过 SQL 服务器(版本 13.0.1742.0)中的 OPENQUERY 更新 mysql 服务器(版本:8.0.21)中的整个 table。我试过了,但它产生了一个错误 Row cannot be located for updating. Some values may have been changed since it was last read
而这个 The rowset was using optimistic concurrency and the value of a column has been changed after the containing row was last fetched or resynchronized
.
update linkedTable
set
linkedTable.id_parent=unlinkedTable.IdCat1,
linkedTable.code=unlinkedTable.CodeFamilleFAT,
linkedTable.niveau=unlinkedTable.NiveauCategorieFAT,
linkedTable.langue=unlinkedTable.CodeLangueFAT,
linkedTable.nom=unlinkedTable.LibelleCommercialFAT,
linkedTable.descriptionA=unlinkedTable.DescriptifCom1FAT,
linkedTable.vignette=null,
linkedTable.id_categorie=unlinkedTable.id
from openquery(NAMELINKEDSERVER, 'select id_categorie, id_parent, code, niveau, langue, nom, description as descriptionA, vignette from DatabaseMySQL.Table') as linkedTable
inner join DatabaseSQLserver.dbo.Table as unlinkedTable on unlinkedTable.Id = linkedTable.id_categorie
然后我试了这个:
update linkedTable
set
linkedTable.id_parent=unlinkedTable.IdCat1,
linkedTable.code=unlinkedTable.CodeFamilleFAT,
linkedTable.niveau=unlinkedTable.NiveauCategorieFAT,
linkedTable.langue=unlinkedTable.CodeLangueFAT,
linkedTable.nom=unlinkedTable.LibelleCommercialFAT,
linkedTable.descriptionA=unlinkedTable.DescriptifCom1FAT,
linkedTable.vignette=null,
linkedTable.id_categorie=unlinkedTable.id
from openquery(NAMELINKEDSERVER, 'select id_categorie, id_parent, code, niveau, langue, nom, description as descriptionA, vignette from DatabaseMySQL.Table') as linkedTable
inner join DatabaseSQLserver.dbo.Table as unlinkedTable on unlinkedTable.Id = linkedTable.id_categorie
where linkedTable.id_categorie = 1
这项工作但只更新了一行。所以我写了一个存储过程来更新每一行但是太花时间了。
有人可以解释为什么我的第一个查询不起作用(问题 1)以及如何减少存储过程的时间(问题 2)吗?
我使用 while 循环(计算 id 的数量并更新每个 id)。
提前致谢。
亲切的问候。
我通过检查 MySQL 中 ODBC 驱动程序的一些选项并阅读一些论坛来解决问题。我勾选这个框。 enter image description here
此选项可以避免前面引用的错误。使用此选项,我可以更新多个值而不会在加入或其他请求时出错。感谢 Solarflare 和“另一个人”(我忘了名字)纠正我的错误(编辑 A POST)。祝你们都有美好的一天。