我在SQL Server中有2个链接服务器,并希望更新远程数据库中的1条记录 问题是查询需要很长时间(6分钟),因为这只是1条记录,我需要更新数千条,所以我需要采取另一种方法。我可以尝试其他任何想法或建议吗?
我在LocalTable的TaskID,TaskType和ClosedOn + Completed + Started以及RemoteTable的TaskID,TaskType和Status上有索引。
这就是我目前所拥有的
UPDATE RemoteTable
SET RemoteTable.TaskType = LocalTable.TaskType,
RemoteTable.Status = CASE WHEN IsNull(LocalTable.ClosedOn, 0) <> 0 THEN 'Closed'
WHEN IsNull(LocalTable.Completed, 0) <> 0 THEN 'Completed'
WHEN IsNull(LocalTable.Started, 0) <> 0 THEN 'Started'
ELSE 'Created'
END,
FROM Tasks LocalTable INNER JOIN [172.1.2.3].DBName.dbo.Tasks RemoteTable
ON Local.TaskID = RemoteTable.TaskID
where RemoteTable.TaskID = 12345
答案 0 :(得分:1)
我认为由于分布式事务到链接服务器,它很慢。
您是否可以在远程服务器上编写存储的Prodecure并调用该SP进行更新?
如果我没记错(旧作业),INSERTS不会遇到此问题,因此您可以将数据加载到远程服务器上的临时表中,远程SP可以处理这些“命令”以进行更新。