如何在MS SQL Azure中联接来自不同数据库的两个表?

时间:2019-05-16 08:55:12

标签: sql-server azure-sql-database

我在两个不同的数据库中有两个不同的表。需要同时连接表和使用查询获取结果

1)报告-报告ID,报告名称,说明

表报告存在于数据库“ A”中

2) report_owners -report_id,report_owner

表report_owners存在于数据库“ B”中

尝试以下查询以联接表,但会引发错误(此版本的SQL Server不支持引用服务器和/或数据库)。

查询:

select * from [A].[dbo].['reports'] as all_reports
INNER JOIN
select * from [B].[dbo].['report_owners'] as all_owner
ON all_report.report_id = all_owners.report_id

注意:从数据库“ A”可以访问数据库“ B”的交叉查询功能

有人请帮助我解决此问题吗?

1 个答案:

答案 0 :(得分:0)

您需要使用elastic queries来执行跨数据库查询。请参见以下示例:

客户信息(远程数据库)

CREATE TABLE dbo.CustomerInformation (CustomerID int identity(1,1) , CustomerName nvarchar(255));

DECLARE @i int = 1;
WHILE @i < 20000
BEGIN
INSERT INTO CustomerInformation(CustomerName)
VALUES ('Frodo');

SET @i += 1;
END

在将使用外部表的数据库上

CREATE TABLE OrderInformation(OrderId Int identity(1,1), CustomerId int,Ordervalue int);


SET NOCOUNT ON;
DECLARE @i int = 1;
WHILE @i < 200 
BEGIN
INSERT INTO OrderInformation(CustomerId,Ordervalue)
Values (@I,111);

set @i += 1;
END

CREATE EXTERNAL TABLE  [dbo].CustomerInformation(
    CustomerID [int],
CustomerName nvarchar(255))
    WITH  
(  
    DATA_SOURCE = Stackoverflow  
); 

像这样查询远程表。

SELECT o.OrderId, c.CustomerID, c.CustomerName
  FROM OrderInformation o
  JOIN CustomerInformation c ON o.CustomerID = c.CustomerID
 WHERE o.OrderId = 155