更好的SQL Server远程查询方式?

时间:2011-12-22 21:29:43

标签: sql-server database-performance

我有两个SQL Server实例,我在另一台服务器的一台服务器上进行了大量远程数据库查询。就像server1.database1上的这个查询一样:

select T1.id
from server1.database1.dbo.table1 T1
inner join server2.datbase2.dbo.table2 T2
on T1.id = T2.id

我从其他人那里继承了这段代码,并想知道是否有更好(更快)的方法吗?我的意思是,有没有办法在server1.database1.dbo上创建server2.databse2.dbo.table2的精确复制副本,该副本会更新自身并使其自身保持最新状态?

Microsoft SQL Server标准版(64位) 版本10.0.4000.0

编辑:实际上,我现在在这种情况下做的是,如果可以的话,我使用开放查询和(nolock)来获取我需要的最小数据集,并将其放在临时表中。我将“id”列设置为唯一的聚簇索引,以便它可以快速加入我在服务器1上加入的任何内容。

2 个答案:

答案 0 :(得分:2)

在SQL Server中,您的方案有三个主要选项(取决于您的版本和版本):

Log Shipping :易于设置和维护;但是,“副本”数据库不是实时数据库,只能与原始服务器上的最后一个事务日志备份一样是最新的。

Mirroring :非常接近实时,但“副本”数据库无法直接读取;相反,需要定期创建快照。

Replication :难以管理和维护,但可能会为您提供“副本”数据库中最实时的数据版本。

除非您遇到链接服务器的性能或稳定性问题,否则它会坚持使用该方法,除非您愿意花费大量时间和精力来实施这三种方法中的一种。

答案 1 :(得分:0)

您可以创建表的视图,它是不可编辑的,但是可以获取确切的表而无需始终返回到其他数据库。但是你仍然需要另一张表。