SQL Server 2017 - EF пытается получить доступ к базе данных, отличной от строки подключения - PullRequest
0 голосов
/ 09 февраля 2019

У меня очень неловкая ситуация, и я понятия не имею, как ее решить.

Вот подробности.

У меня есть три экземпляра SQL Server 2017, которые используются сПроизводственная база данных настроена с высокой доступностью.

Серверы SRV1, SRV2 и SRV3

У меня есть производственная база данных с именем DB1, настроенная с высокой доступностью следующим образом: - главный узел (ч / б)на SRV1 - вторичные узлы (r / o) на SRV2 и SRV3

Также на SRV3 у меня есть промежуточная копия базы данных с именем DB1_DEMO

Время от времени мы восстанавливаем производственные данные в DB1_DEMO,для свежих тестовых данных.

Также я храню локальную копию базы данных для разработки на моей локальной машине разработчика, которая также называется DB1, которую я использую для обновления модели EF.

Приложение использует EF6с дб первым подходом.Когда мы вносим некоторые изменения в базу данных, мы обновляем модель EF (edmx).

Проблема, которая началась недавно, заключается в следующем:

Даже если на промежуточной копии приложения яиметь правильную строку подключения (указывающую на SRV3 и DB1_DEMO), когда я запускаю несколько SP (используя ADO.NET или EF), я получаю следующую ошибку:

The target database ('DB1') is in an availability group and is currently
accessible for connections when the application intent is set to read only.
For more information about application intent, see SQL Server Books Online.

Но код не обращается к базе данныхDB1, но DB1_DEMO.

Строка подключения четко указывает на DB1_DEMO.

<add name="MpnModelDC" connectionString="metadata=res://*/Model.MpnModel.csdl|res://*/Model.MpnModel.ssdl|res://*/Model.MpnModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Server=SRV3;Database=DB1_DEMO;MultipleActiveResultSets=True;&quot;" providerName="System.Data.EntityClient" />

Действительно, на SRV3 есть также копия только для чтения производственной базы данных, DB1, но только каквторичный узел r / o.

И на этапе стадии ничто не указывает на имя базы данных DB1.

Это происходит не на каждом SP, а только на нескольких из них.

Есть идеи, что происходит?

Спасибо

1 Ответ

0 голосов
/ 09 февраля 2019

Есть идеи, что происходит?

Вот мое предположение: у вас есть код, ссылающийся на объект, использующий имя из трех частей.Например, хранимая процедура в DB1_DEMO имеет что-то вроде:

SELECT ... FROM DB1.DBO.SOMETABLE
...