Обработка внешнего источника данных в Azure SQL и гео-репликация
Ниже моя лазурная установка
- Elastic Pool Primary (30 баз данных) - активный
- 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 обрабатывает это сам по себе?
Любая обратная связь или помощь приветствуется.
Спасибо
1 ответ
Это является следствием того факта, что первичная база данных реплицируется полностью, включая метаданные, хранящиеся там. Чтобы обойти это, вы можете попробовать настроить два разных внешних источника на первичном - например, ElasticDBQueryDataSrcPrimary, локальный для первичного пула, и ElasticDBQueryDataSrcSecondary, локальный для вторичного пула. Вы будете нести ответственность за переключение вашего источника данных между запросами на основной и дополнительный.