在 Azure SQL 和异地复制上处理外部数据源

Handling external data source on Azure SQL and geo-replication

下面是我的 azure 设置

  1. 主要弹性池(30 个数据库)- 活动
  2. Elastic Pool Secondary(30 个数据库)- 只读异地复制。

WebApp 使用主池进行读写。 所有关于二级的报告 运行。

我最近不得不在主数据库之一上添加一个外部数据源,跨数据库查询效果很好。

好在这个外部数据源配置也被复制并且在辅助上运行良好。

问题:

Used the following to create external data souce

CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred 
WITH IDENTITY = 'username', 
SECRET = 'password'; 

CREATE EXTERNAL DATA SOURCE ElasticDBQueryDataSrc WITH 
(TYPE = RDBMS, 
LOCATION = 'primarydbname.database.windows.net', 
DATABASE_NAME = 'db1', 
CREDENTIAL = ElasticDBQueryCred, 
) ;

当我 运行 从我的辅助数据库查询时,它 运行 很好,我担心的是,它使用的是主数据库 db1 的外部数据源。

是否有更好的方法在辅助池中添加外部数据源,以便它可以使用它自己的 db1 副本?还是 azure sql 自己处理这个问题?

感谢任何反馈或帮助。

谢谢

这是因为主数据库被整体复制,包括存储在那里的元数据。要解决此问题,您可能需要尝试在主服务器上配置两个不同的外部源 - 例如主池本地的 ElasticDBQueryDataSrcPrimary 和辅助池本地的 ElasticDBQueryDataSrcSecondary。您将负责在主要和次要查询之间切换数据源。