【问题标题】:SQL Server, Sub-query from different object connectionSQL Server,来自不同对象连接的子查询
【发布时间】:2018-04-16 15:23:04
【问题描述】:

我正忙于实施新的 ERP 系统,进行数据迁移。 在迁移数据的同时 - 实时环境不断发展。 所以我们仍处于测试阶段,关注所有脚本。 现在,我开始的每个新字段/区域都希望更新上一阶段没有的新创建记录。

所以我们坐在不同的环境中:

  • 10.0.0.1 - 旧服务器
  • 10.0.0.2 - 迁移服务器

所以在 SQL 中 - 我有两个连接。

我想做的是从旧服务器中选择主数据,新服务器上已经有主帐户:

SELECT 
customer_code
FROM customer  --10.0.0.2 old server

 WHERE customer_code IN

 (
  USE datamigration  --10.0.0.1 new server
  SELECT cust_code FROM [dbo].[new_table]  --data on new server
 )

所以,只显示旧服务器中在新服务器上有主文件的记录。

谢谢!

系统 视窗服务器 2012 SQL 服务器 2014

【问题讨论】:

    标签: sql-server object connection subquery


    【解决方案1】:

    设置linked server 并使用four part naming convention

    SELECT 
    customer_code
    FROM customer
    WHERE customer_code IN
    (
      SELECT cust_code FROM [Linked server].[datamigration].[dbo].[new_table]
    )
    

    注意如果 SELECT cust_code FROM [Linked server].[datamigration].[dbo].[new_table] 返回任何 NULL 值,您的整个 SQL 语句将不会返回任何内容。

    【讨论】:

    • 感谢您的快速回复! 4 部分命名是一个很好的指针,但我需要在链接服务器上做一些功课。这对我来说将是第一次......
    • 很容易配置。在 Management Studio 中,转到服务器对象 --> 链接服务器。右键单击并新建链接服务器。跟着你的鼻子走,你应该可以很容易地设置它。
    • 好的,ja - 这很容易!谢谢,现在我只需要正确获取访问权限...错误 15007
    【解决方案2】:

    只需使用链接服务器。 添加链接服务器后,您可以从其他服务器引用它。

    假设将您的新服务器链接到名称为 [10.0.0.1] 的旧服务器中

    现在您可以简单地使用(从旧服务器)

    SELECT customer_code
    FROM customer  --10.0.0.2 old server
    WHERE customer_code IN (  
      SELECT cust_code FROM [10.0.0.1].[NewDatabaseName].[dbo].[new_table]  --data on new server
    )
    

    我将使用连接语法

    SELECT customer_code, cust_code
    FROM customer  t_old --10.0.0.2 old server
    join [10.0.0.1].[NewDatabaseName].[dbo].[new_table] t_new on customer_code = cust_code 
    

    【讨论】:

    • 关于加入的有趣建议...谢谢!会试试看。
    猜你喜欢
    • 2021-10-03
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 2017-10-23
    • 2015-07-31
    • 1970-01-01
    相关资源
    最近更新 更多