【问题标题】:How can I get data from 2 different SQL Servers如何从 2 个不同的 SQL Server 获取数据
【发布时间】: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 的帖子,但无法正确使用语法以使其适合我的情况

谢谢

【问题讨论】:

    标签: sql-server


    【解决方案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
          

          【讨论】:

          • 很高兴您找到了解决方案。但如果你想与其他人分享,你需要提供一些解释。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多