如何从 2 个不同的 SQL Server 获取数据

Posted

技术标签:

【中文标题】如何从 2 个不同的 SQL Server 获取数据【英文标题】:How can I get data from 2 different SQL Servers 【发布时间】:2016-01-06 20:59:05 【问题描述】:

我有以下情况。我正在使用 2 个单独的 SQL 服务器。服务器 A 托管公司 HR 数据。服务器 a 上有一个视图,可为每个员工提供主管信息。我需要获取下一个主管信息。所以我用这个来编码,我从数据库管理员那里得到的,来完成那个

SELECT *
FROM [lawdata].[dbo].[All_Users] ru1 
left outer join [lawdata].[dbo].[All_Users] ru2 on ru1.SUPER_EID = ru2.EMP_EID

现在我有一个单独的 SQL Server 服务器 B 上的数据,其中包含一些报告数据 ReportData 表包含与服务器 A 上视图中显示的员工 ID 号匹配的员工 ID。问题是如何合并从服务器 A 和服务器 B 上的员工 ID 查看,以便我可以将主管链接到服务器 B 上的数据行。

我看过 this 的帖子,但无法正确使用语法以使其适合我的情况

谢谢

【问题讨论】:

【参考方案1】:

您需要链接服务器。然后使用

[ServerName].[DatabaseName].[dbo].[tableName]

Create Linked Servers (SQL Server Database Engine)

【讨论】:

【参考方案2】:

为此,我会创建一个 SSIS 包,每晚一次将数据从 lawdata 服务器拉到服务器 B 上的数据库中 - 可能只是截断并重新加载。这样,您在服务器 B 上对 lawdata 数据的所有查询都本地化到一台服务器上的一个数据库。

【讨论】:

【参考方案3】:

在您的代码中,您似乎对自身进行了左外连接。试试

SELECT *
FROM [server1].[dbname].[dbo].[tablename] A 
left outer join [server2].[dbname].[dbo].[tablename] B on A.columnname = B.columnname
where ["insert where clause here"]

【讨论】:

【参考方案4】:

以防其他人试图解决同样的问题,这是我想出的解决方案;感谢上面给出的建议

select rd.*, ru1.emp_first, ru1.emp_last, ru1.Super_Last as FirstLineLast,
Super_first as FirstLineFirst,
ru2.Super_Last as SecondLineLast,
2.Super_first as SecondLineFirst
from [TaserEvidence].[dbo].[ReportData] rd left outer join  
[soops-lawrept].[lawdata].[dbo].[My_View] ru1 on rd.OwnerBadgeId = ru1.emp_EID
left outer join 
[soops-lawrept].[lawdata].[dbo].[rob_users] ru2 on ru1.super_EID = ru2.EMP_EID

【讨论】:

很高兴您找到了解决方案。但如果你想与其他人分享,你需要提供一些解释。

以上是关于如何从 2 个不同的 SQL Server 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用sql server从excel中获取数据

如何从 SQL Server 存储过程中的 3 列中获取 MAX 值?

SQL Server - 从 2 列获取不同的 ID 并存储在一个列表中

如何从 SQL Server 中的日期获取月份编号(不是月份名称)?

sql 如何获取SQL Server表及其行数列表?

如何从 SQL Server 中的表中获取不匹配的数据