SQL Management Studio (wersje przed 2016)
Niestety istnieją pewne zastrzeżenia, które sprawiają, że korzystanie z aplikacji Intent w SQL Management Studio jest nieco bolesne:
Aby połączyć się ręcznie z intencją ReadOnly, po otwarciu okna dialogowego Połącz z serwerem z Eksploratora obiektów, użytkownicy muszą pamiętać:
- Kliknij Opcje >> .
- Przejdź do zakładki Dodatkowe parametry połączenia .
- Wprowadź dodatkowy parametr jako ApplicationIntent = ReadOnly;
- (Uwaga: użytkownicy nie mogą klikać przycisku Opcje << po wprowadzeniu dodatkowych parametrów połączenia, w przeciwnym razie parametry zostaną utracone).
- Kliknij Połącz .
- Zawsze uruchamiaj okna zapytań, klikając prawym przyciskiem myszy żądaną bazę danych w widoku Eksploratora obiektów i wybierając Nowe zapytanie, aby uniknąć uruchamiania się z zastrzeżeniem nr 3 poniżej.
Zastrzeżenia, które mają zastosowanie, są następujące:
- Mimo że SQL Management Studio może połączyć się z intencją tylko do odczytu, nie zapisuje dodatkowych parametrów połączenia, gdy połączenie zostanie dodane do zarejestrowanych serwerów.
- Zachowanie podczas ręcznej edycji lokalnie zarejestrowanych serwerów w pliku RegSrvr.xml w celu dodania zamiaru aplikacji jest wyjątkowo niespójne i zostanie zastąpione za każdym razem, gdy zostanie wprowadzona zmiana w interfejsie GUI, co spowoduje, że to obejście będzie niewiarygodne.
- Baza danych Always On musi zostać wybrana przed otwarciem okna zapytania; w przeciwnym razie połączenie zostanie przekierowane do serwera głównego. Jeśli spróbujesz wybrać bazę danych za pomocą menu rozwijanego okna zapytania, po tym jak okno zapytania zostało już otwarte dla bazy danych nie zawsze włączonej, pojawi się okno dialogowe błędu. Jeśli spróbujesz zmienić bazę danych na bazę danych Always On z instrukcją USE po otwarciu okna zapytania na bazę danych Always On, wyniki będą wyglądać następująco podczas próby wykonania zapytania 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 (wersje 2016 lub nowsza)
SQL Server Management Studio 2016 lub nowszy może łączyć się z intencją aplikacji tylko do odczytu (wykonując te same 6 kroków, co poprzednie wersje) i przechowuje dodatkowe parametry połączenia. Wciąż są pewne zastrzeżenia:
- Widok Eksploratora obiektów nie będzie wyliczał żadnych tabel ani innych obiektów w bazach danych AlwaysOn. Próba ich rozszerzenia powoduje wyświetlenie komunikatu o odmowie dostępu.
- Nie można mieć połączenia Tylko do odczytu i połączenia nie tylko do tego samego odbiornika otwartego w tym samym czasie.
- Intellisense dla nazw obiektów w bazie danych nie działa. (Co dziwne, obiekty są dobrze wyliczane w Projektancie zapytań, które można uruchomić za pomocą Design Query w Edytorze ... z menu po kliknięciu prawym przyciskiem myszy.)
- Zastrzeżenie 3 z wcześniejszych wersji nadal obowiązuje.
Produkty innych firm
LinqPad przechowuje cały ciąg połączenia, w tym Intent aplikacji i bazę danych podczas zapisywania połączenia, i dlatego może być wykonalną opcją do wykonywania zapytań tylko do odczytu w bazach danych Always On.
Próbowałeś już skryptu PowerShell, ale używasz innej pisowni (ze spacją) w celu zastosowania aplikacji? A może pomieszałem metody połączenia?
Połącz się z SQL Server przy użyciu aplikacji przeznaczonej tylko do odczytu
źródło
Czy to możliwe, że utworzysz plik konfiguracyjny, a następnie automatycznie utworzysz niezbędne zarejestrowane serwery w SSMS? Tak jak wspomniano w moim artykule MSSQLTips:
Automatyzacja rejestracji i obsługi serwerów w SQL Server Management Studio (SSMS)
źródło
Zostało to naprawione w SQL 2016 SSMS podczas korzystania z zarejestrowanych serwerów. Udało mi się zarejestrować połączenie ReadOnly Intent jako część lokalnej grupy serwerów i otworzyć zapisane połączenie do wykorzystania w przyszłości. Dzięki za pomoc w tym.
źródło
Nie mogę komentować, ale dodaję do odpowiedzi DBAUser.
Podczas konfigurowania połączenia w obszarze zarejestrowanych serwerów nie widziałem opcji dodania zamiaru aplikacji w GUI.
Musiałem albo połączyć się za pomocą eksploratora obiektów (używając
Data Source=<Listener>;Initial Catalog=<Database>;ApplicationIntent=ReadOnly
), a następnie zarejestrować serwer, gdy tylko się połączyłem.Lub dodaj
Initial Catalog=<Database>;ApplicationIntent=ReadOnly
do ciągu połączenia w pliku .regsrvr.źródło