我有一个从链接服务器检索数据的视图,因此当通过视图调用链接表时,我将使用select * from linkerserver.linkedtable
。我的查询有效,我得到了一个信息表。
但是,我担心使用链接服务器时的速度和争用,特别是如果有多个用户访问/调用使用链接服务器视图的 sp (存储过程)。
我不确定如何解决这个问题,或者即使这是一个问题? (使用链接服务器视图时,是否会面临速度或争用问题?)。
解决这个问题的方法可能是:
有关如何解决此问题或最佳使用案例的任何建议将不胜感激。
答案 0 :(得分:1)
最好的办法是让其他团队在更新数据后向您推送数据。如果他们只是添加新记录,那么您需要将其添加到表中。如果他们也在更新数据,那么他们可以使用Merge,以便只处理新的记录和更改。
我的第二个选择是在服务器上有一个表,一旦数据加载,就会从链接服务器中删除并重新提取(或使用Merge)。你需要与他们的团队协调。
我的最后一个选择是让SQL Agent夜间提取这些数据。除非源数据也在每晚更新,否则这将是我的第二选择。如果他们在午夜到凌晨2点之间处理,我的工作时间是凌晨3点或凌晨4点。
答案 1 :(得分:0)
将SELECT
的结果写入表格非常容易。所有列都将自动创建:
SELECT * INTO NewTable FROM linkerserver.linkedtable
NewTable
可以是普通表格,也可以是#
或##
。
使用后(或之前)你只需删除此表......
答案 2 :(得分:0)
过去我遇到过这个问题。 根据我的经验,我注意到sql server在链接服务器时没有生成最好的查询计划。
拥有此表的数据库有多大?是否可以进行只读复制?
如果是,那么最好这样做。如果没有,那么就像你说的那样,你需要一个本地表和一个触发器。或者每5分钟左右使用sql代理进行一次增量更新。