2

我有两个 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 获取表中的数据?

提前谢谢了。

4

2 回答 2

1

如果您想强制在远程机器上完成处理,我建议使用OPENQUERY 。例如:

SELECT *
FROM   OPENQUERY(
        HEAVY,
        'SELECT BusinessDate,
               Location,
               SUM(Sales)
        FROM   MyDatabase.dbo.Last7DaysOfSales -- Note the dot notation
        GROUP BY BusinessDate, Location')
于 2012-05-30T21:28:53.717 回答
0

或者把它放在一个视图或存储过程中。并从远程机器访问它们。

于 2012-05-30T21:36:58.030 回答