在我的SQL Server 2012数据库中,我有一个链接服务器引用到第二个SQL Server数据库,我需要从中提取记录并相应地更新。
我正在尝试运行以下更新语句:
UPDATE
Linked_Tbl
SET
Transferred = 1
FROM
MyLinkedServer.dbo.MyTable Linked_Tbl
JOIN
MyTable Local_Tbl ON Local_Tbl.LinkedId = Linked_Tbl.Id
JOIN
MyOtherTable Local_Tbl2 ON Local_Tbl.LocalId = Local_Tbl2.LocalId
在运行一小时后我不得不停下来,因为它仍在执行。
我在线阅读并found solutions说明最好的解决方案是在链接服务器本身上创建一个存储过程来执行更新语句,而不是通过网络运行它。
我遇到的问题是:
我希望人们可能已经设法提出其他解决方案,因为通常情况下您没有权限对其他服务器进行更改。
任何想法??
答案 0 :(得分:-1)
我不确定,它是否能提供更多性能,你试试看:
UPDATE
Linked_Tbl
SET
Transferred = 1
FROM OPENDATASOURCE([MyLinkedServer],'select Id, LocalId,Transferred from remotedb.dbo.MyTable') AS Linked_Tbl
JOIN MyTable Local_Tbl
ON Local_Tbl.LinkedId = Linked_Tbl.Id
JOIN MyOtherTable Local_Tbl2
ON Local_Tbl.LocalId = Local_Tbl2.LocalId