如何跨多个SQL服务器操纵数据库

问题描述:

我目前有四个不同的服务器,并且都有许多数据库。每个服务器都有1-4个数据库/表,我需要将它们合并到不同的服务器上,并映射到该服务器上的表中的列。如何跨多个SQL服务器操纵数据库

作为一个例子,让我们说这是我的服务器D的创建userId是在DB服务器A中的表中的用户数据库,该userName是在服务器B,所述dateUserStarted是服务器C(I知道这是一个愚蠢的设置,它只是例如)

使用SQL Server 2008 R2,我该怎么做?我也希望运行更新此合并表的SQL Server代理脚本。

我查看了“链接的服务器”,似乎无法让它工作。有什么我应该使用?

+0

复制是这里的关键字。 –

+1

链接的服务器不起作用? – Chains

+2

虽然不确定什么“似乎无法得到它的工作”的意思,看到我的答案在这里http://stackoverflow.com/questions/498142/what-is-the-best-way-to-refresh-a-rollup-table下载时需要一个手动但少维护的复制版本。您将此过程放在每台服务器上,安排它,然后用来自源链接服务器的查询替换。您可以只取所需的表/列/行,并且可以避免在要复制的每个表上都需要时间戳列。 –

根据读取的频率,数据大小以及服务器之间的带宽,您可能会摆脱最容易维护的远程连接解决方​​案。

在服务器D上创建一个数据库和视图,这些数据库将使用链接服务器从其他服务器加入三个数据源(userid,userName,dateUserStarted)。 例如,服务器d将有三个链接的服务器对象,分别称为serverA,serverB和ServerC。

您的视图看起来像这样。 (我做了一些关于远程表主键是“Id”的假设)。

Create view vUserData 
as 
SELECT A.userId, B.userName,C.dateUserStarted FROM [serverA].[TheDataBaseName].[dbo].[TableWithUserId] A 
    join [serverB].[TheDataBaseName].[dbo].[TableWithUserName] B on A.userId=B.id 
    join [serverC].[TheDataBaseName].[dbo].[TableWithDateUserStarted] C on A.userId=C.id 
+0

将服务器与其工作的GUI连接起来之后,我一定是搞乱了存储过程。我正在做你的加入解决方案,只是不在视图中。 – DFTR