Sql server 如何跨两个Azure SQL Server数据库链接两个同名表?

Sql server 如何跨两个Azure SQL Server数据库链接两个同名表?,sql-server,azure-sql-database,Sql Server,Azure Sql Database,过去,我曾使用作用域数据库凭据、外部数据源和外部表在一个数据库中构建到单独数据库中的表的链接。然而,到目前为止,我发现只有在两个数据库中的表名不同(按名称或按模式)时,这种方法才有效。这是因为链接期望“源”数据库中定义的外部表的名称与“目标”数据库中的表的名称完全匹配 我有两个数据库,它们是彼此的“镜像”。每个数据库都有一个名为[dbo].[Customers]的表。在DatabaseA中,已经有一个名为[dbo].[Customers]的表,如何链接到DatabaseB中的[dbo].[Cus

过去,我曾使用作用域数据库凭据、外部数据源和外部表在一个数据库中构建到单独数据库中的表的链接。然而,到目前为止,我发现只有在两个数据库中的表名不同(按名称或按模式)时,这种方法才有效。这是因为链接期望“源”数据库中定义的外部表的名称与“目标”数据库中的表的名称完全匹配

我有两个数据库,它们是彼此的“镜像”。每个数据库都有一个名为[dbo].[Customers]的表。在DatabaseA中,已经有一个名为[dbo].[Customers]的表,如何链接到DatabaseB中的[dbo].[Customers]呢?SQL不允许我在DatabaseA中构建名为[dbo].[Customers]的外部表,因为它已经存在。我可以构建一个名为[ext].[Customers]的外部表,但它不会映射到数据库B中的表,因为数据库B中没有[ext].[Customers]


这就是我的问题的症结所在——有没有办法在DatabaseA中创建一个名为[ext].[Customers]的外部表,并将其映射到DatabaseB中的[dbo].[Customers]?

您可以在中指定远程模式和对象名,例如


如果你做了很多事情,你应该考虑把所有的表放在同一个数据库中,在一些应用程序中是不同的模式猜测。我们这里有镜像的暂存和生产环境,因此单独的数据库似乎更合适。有时,尽管我们需要将阶段性数据推送到生产中,但直到现在为止,这是非常麻烦的。我打算写这篇文章;创建链接,发布数据,然后删除链接,以便在操作完成后两个数据库再次分离。您是否考虑过在data factory中构建此过程?然后,您的所有ETL都在数据库之外,您根本不必对prod数据库运行任何脚本。ADF非常适合于元数据驱动的操作,即告诉它一个表,它可以完成所有操作,而不需要列映射等。快速跟进-存储过程事务能否成功地跨两个数据库?
CREATE EXTERNAL TABLE ext.Customers
(   
  [CustomerID] int NOT NULL,
  [CustomerName] varchar(50) NOT NULL,
  [Company] varchar(50) NOT NULL
)
WITH
( 
  DATA_SOURCE = MyElasticDBQueryDataSrc,
  SCHEMA_NAME = N'dbo',  
  OBJECT_NAME = N'Customers'  
)