Строка подключения для структуры сущностей для подключения к серверам высокой доступности SQL

Я занимаюсь разработкой приложения с использованием Entity Framework. В этом приложении целевой базой данных являются серверы кластеров высокой доступности SQL 2012, которые имеют два члена. Один настроен как основной, а другой как дополнительный.

Попытка подключиться к кластеру с помощью SQL Management Studio - это нормально. Я мог бы сделать запрос и все. Проблема в том, когда я пытаюсь подключить его с моим приложением. Он выдаст исключение с сообщением:

The target database ('UserDatabase') 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.

Проверяя больше, выдается исключение, когда Entity Framework пытается открыть соединение с базой данных.

Вот строка подключения, которую я использую:

data source=SQLCL01;initial catalog=UserDatabase;user id=test-user;password=##pass##;MultipleActiveResultSets=True

Так как я знаю, что с помощью SQL Management Studio я мог бы прекрасно соединиться с теми же учетными данными, мне было интересно, связана ли проблема с моей строкой соединения. У кого-нибудь есть подобный опыт?

Обновление: SQLCL01 является слушателем. Имя экземпляра БД - SQLDB01 и SQLDB02.

2 ответа

Я полагаю, что SQLCL01 в то время, когда вы пытались подключиться, работает как вторичная роль. Чтобы подключиться к вторичной реплике, необходимо, чтобы AG был настроен на разрешение подключения для чтения вторичных реплик, а в строке подключения должно быть явно указано, что подключение предназначено только для чтения, добавив:;ApplicationIntent=ReadOnly

В качестве альтернативы вы можете использовать имя слушателя в "источнике данных". Это имя сети, которое всегда указывает на текущий первичный. Это должно быть настроено в AG. Для получения дополнительной информации, проверьте: http://msdn.microsoft.com/en-us/library/hh213417.aspx

Попробуйте использовать:

<b>server=tcp:</b>SQLCL01;initial catalog=UserDatabase;user id=test-user;password=##pass##;MultipleActiveResultSets=True
Другие вопросы по тегам