0

我有两个 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

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

4

2 回答 2

2

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

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

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

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

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

于 2011-12-22T21:40:42.793 回答
0

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

于 2011-12-22T21:32:34.713 回答