【问题标题】:SQL - Combining two databasesSQL - 结合两个数据库
【发布时间】:2016-02-25 20:00:22
【问题描述】:

尝试连接两个活动数据库以报告两个正在运行的 SQL。最近将几个客户组迁移到新数据库,但现在需要运行比较历史报告。如何从两个数据库中获取所有数据,连接根据使用的连接过滤掉任一侧新添加的客户。这可能吗?

【问题讨论】:

  • 你先看这里了吗? stackoverflow.com/questions/12457947/…
  • 不能把数据库名放在表名前面的括号里吗? (即选择中的 [databasename].[tablename])至于过滤新数据,您必须按添加的日期进行过滤,或者如果您为“迁移”或其他东西设置了一些...不能想别的办法。
  • 这取决于您的数据大小。如果您的数据库非常大,那么您可能希望为此使用 ETL 而不是 SQL 查询。

标签: sql sql-server tsql


【解决方案1】:

如果它们位于两个不同的服务器上,您需要先将这些服务器相互链接。 This link 应该让你朝着正确的方向前进。然后你需要使用 4-part BOL 来引用它们:

SELECT T1.*
FROM [Server1].[Database1].[dbo].[Table1] T1
LEFT JOIN [Server2].[Database2].[dbo].[Table1] T2
ON T1.MyField = T2.MyField

如果它们在同一台服务器上,您只需将数据库名称添加到您的 SQL 代码中。因此,如果您尝试将 Database1 中的 Table1 中的数据链接到 Database2 中的 Table1,您可以这样做:

SELECT T1.*
FROM [Database1].[Table1] T1
LEFT JOIN [Database2].[Table1] T2
ON T1.MyField = T2.MyField

【讨论】:

  • 您的第二个示例缺少架构。
  • 啊……就是这样。我实际上使用了我的代码中的一个实时示例(进行必要的更改)。如果他使用 dbo,它是可选的。但你是对的,无论如何我都应该包含它。
猜你喜欢
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多