我有两个SQL Server,我是一个系统管理员。一个是名为LIGHT的2008R2服务器,因为该框体验活动非常少。另一个是名为HEAVY的2005服务器,它在一天中看到了相当不错的活动量。两台服务器都在同一个数据中心。我在LIGHT上创建了一个链接服务器,以便它可以看到HEAVY。
我已经创建了一个关于HEAVY的视图,以便在过去几天内每天按位置累计销售额或多或少:
SELECT BusinessDate,
Location,
SUM(Sales)
FROM Last7DaysOfSales
GROUP BY BusinessDate, Location
当我使用SSMS在HEAVY上运行此视图时,它会在30秒内运行。当我通过链接服务器连接从LIGHT运行相同的视图时,需要17分钟!我希望使用一个视图意味着“重举”将在HEAVY上完成,并且视图的结果发送给LIGHT。考虑到荒谬的运行时间,似乎LIGHT正在拉动所有记录并完成工作本身?
我能解决这个问题最有效的方法是什么?是否有可能让HEAVY在本地处理执行并将结果传递给LIGHT?或者我唯一的选择是在HEAVY上创建一个夜间进程,每晚将这个视图的结果转储到一个表中,然后让LIGHT抓住表中的数据?
非常感谢提前。
答案 0 :(得分:1)
如果您想强制在远程计算机上完成处理,我建议使用OPENQUERY。例如:
SELECT *
FROM OPENQUERY(
HEAVY,
'SELECT BusinessDate,
Location,
SUM(Sales)
FROM MyDatabase.dbo.Last7DaysOfSales -- Note the dot notation
GROUP BY BusinessDate, Location')
答案 1 :(得分:0)
或者将其放在View或存储过程中。 并从远程机器访问它们。