跨数据库的联盟

时间:2017-12-12 13:46:02

标签: sql-server tsql sql-server-2014

我有一个需要调整的大型查询,因此它可以跨多个数据库查询数据(所有数据库都使用相同的模式)。因此,我希望使用UNION来完成任务。但是我不确定我应该如何实现数据库切换。我已经考虑在查询中切换到三部分名称,但是由于查询非常庞大且复杂,使用子查询,这将非常耗时。我还考虑使用USE并复制和粘贴查询,但在第二个USE语句后出现错误。这里最好的方法是什么?我真的不想太多地修改原始查询,因为它按预期工作。我只是在寻找一种方法来使用查询并从多个数据库中获取结果,然后将它们呈现在一个结果集中。

3 个答案:

答案 0 :(得分:1)

使用3部分命名惯例

select  col1, col2, col3 from DB1.dbo.table1
union all
select  col1, col2, col3 from DB2.dbo.table1

答案 1 :(得分:1)

你在正确的轨道上有三个部分命名。

这种方法的优点在于您也可以跨链接服务器执行此操作。

e.g。

g.col_c.sum(split_out=10).max().compute()

答案 2 :(得分:0)

SELECT COLUMNS HERE <Column1, Column2 ...>
FROM TheFirstDataBase.Schema.TableName
UNION
SELECT COLUMNS HERE <Column1, Column2 ...>
FROM TheSecondDataBase.Schema.TableName

注意:

它必须是相同的列,并且具有相同的数据类型。