如何跨多个SQL服务器操纵数据库
问题描述:
我目前有四个不同的服务器,并且都有许多数据库。每个服务器都有1-4个数据库/表,我需要将它们合并到不同的服务器上,并映射到该服务器上的表中的列。如何跨多个SQL服务器操纵数据库
作为一个例子,让我们说这是我的服务器D的创建userId
是在DB服务器A中的表中的用户数据库,该userName
是在服务器B,所述dateUserStarted
是服务器C(I知道这是一个愚蠢的设置,它只是例如)
使用SQL Server 2008 R2,我该怎么做?我也希望运行更新此合并表的SQL Server代理脚本。
我查看了“链接的服务器”,似乎无法让它工作。有什么我应该使用?
答
根据读取的频率,数据大小以及服务器之间的带宽,您可能会摆脱最容易维护的远程连接解决方案。
在服务器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
复制是这里的关键字。 –
链接的服务器不起作用? – Chains
虽然不确定什么“似乎无法得到它的工作”的意思,看到我的答案在这里http://stackoverflow.com/questions/498142/what-is-the-best-way-to-refresh-a-rollup-table下载时需要一个手动但少维护的复制版本。您将此过程放在每台服务器上,安排它,然后用来自源链接服务器的查询替换。您可以只取所需的表/列/行,并且可以避免在要复制的每个表上都需要时间戳列。 –