SQL Management Studio (версии до 2016 года)
К сожалению, есть некоторые предостережения, которые делают использование Application Intent в SQL Management Studio несколько болезненным:
Для подключения вручную с намерением ReadOnly после вызова диалогового окна « Подключиться к серверу » из обозревателя объектов пользователи должны не забыть:
- Нажмите Опции >> .
- Перейдите на вкладку « Дополнительные параметры подключения ».
- Введите дополнительный параметр как ApplicationIntent = ReadOnly;
- (Примечание. Пользователи не должны нажимать кнопку « Параметры <<» после ввода дополнительных параметров подключения, иначе параметры будут потеряны.)
- Нажмите Подключиться .
- Всегда запускайте окна запросов, щелкая правой кнопкой мыши нужную базу данных в представлении « Обозреватель объектов» и выбирая « Новый запрос», чтобы избежать появления замечания № 3 ниже.
Применяются следующие предостережения:
- Несмотря на то, что вы можете заставить SQL Management Studio подключаться с намерением только для чтения, он не сохраняет дополнительные параметры подключения при добавлении подключения к зарегистрированным серверам.
- Поведение при ручном редактировании локально зарегистрированных серверов в файле RegSrvr.xml для добавления намерения приложения крайне противоречиво и будет перезаписываться каждый раз, когда изменение вносится через графический интерфейс пользователя, что делает этот обходной путь ненадежным.
- База данных Always On должна быть выбрана до открытия окна запроса; в противном случае соединение направляется на основной сервер. Если вы попытаетесь выбрать базу данных, используя раскрывающееся окно запроса после того, как окно запроса уже открыто для базы данных, которая не всегда включена, вы получите диалоговое окно с сообщением об ошибке. Если вы попытаетесь изменить базу данных на базу данных Always On с оператором USE после того, как окно запроса уже открыто для базы данных, отличной от Always On, результаты будут выглядеть следующим образом при попытке выполнить запрос SQL:
Msg 979, Level 14, State 1, Line 1
The target database ('AlwaysOnDatabase') is in an availability group
and currently does not allow read only connections. For more
information about application intent, see SQL Server Books Online.
SQL Management Studio (версии 2016 или выше)
SQL Server Management Studio 2016 или более поздней версии может подключаться с намерением приложения «Только чтение» (используя те же 6 шагов, что и в предыдущих версиях), и в нем хранятся Дополнительные параметры подключения. Есть еще несколько предостережений:
- Представление обозревателя объектов не будет перечислять какие-либо таблицы или другие объекты в базах данных AlwaysOn. Попытка расширить их приводит к сообщению об отказе в доступе.
- Вы не можете одновременно открыть доступ только для чтения и не только для чтения к одному и тому же слушателю.
- Intellisense для имен объектов в базе данных не работает. (Как ни странно, Объекты очень хорошо перечисляются в Конструкторе запросов, который можно запустить с помощью Дизайнерского запроса в Редакторе ... из контекстного меню.)
- Предостережение 3 из предыдущих версий предостережения все еще применяется.
Сторонние продукты
При сохранении соединения LinqPad сохраняет всю строку подключения, включая Application Intent и базу данных, и поэтому может быть приемлемым вариантом для выполнения запросов только для чтения к базам данных Always On.
Вы пробовали скрипт PowerShell, но использовали другое написание (с пробелом) для намерения приложения? Или я перепутал методы подключения?
Подключение к SQL Server с использованием намерения приложения только для чтения
источник
Возможно ли создать файл конфигурации, а затем автоматически создать необходимые зарегистрированные серверы в SSMS? Как упоминалось в моей статье MSSQLTips:
Автоматизация регистрации и обслуживания серверов в SQL Server Management Studio (SSMS)
источник
Это было исправлено в SQL 2016 SSMS при использовании с зарегистрированными серверами. Мне удалось зарегистрировать соединение ReadOnly Intent как часть группы локальных серверов и открыть сохраненное соединение для будущего использования. Спасибо за помощь с этим.
источник
Я не могу комментировать, но добавляю в ответ DBAUser.
Я не увидел опции для добавления Application Intent в GUI при настройке соединения в области зарегистрированных серверов.
Мне нужно было либо подключиться с помощью обозревателя объектов (с помощью
Data Source=<Listener>;Initial Catalog=<Database>;ApplicationIntent=ReadOnly
), а затем зарегистрировать сервер, как только я подключился.Или добавьте
Initial Catalog=<Database>;ApplicationIntent=ReadOnly
в строку подключения в файле .regsrvr.источник