Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Определить AlwaysOn или нет.  [new]
AndrF
Member

Откуда:
Сообщений: 2183
Вопрос - каким образом в SSMS среди Registered Servers можно определить является ли серверер AlwaysOn или нет?
8 ноя 18, 12:57    [21728039]     Ответить | Цитировать Сообщить модератору
 Re: Определить AlwaysOn или нет.  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5162
AndrF,

SERVERPROPERTY('IsHadrEnabled')

например, так :
+ групповой запрос в CMS
declare @cmd varchar(2048)
if SERVERPROPERTY('IsHadrEnabled')=1
	set @cmd='
with rs as 
(
select convert(varchar(20),count(1))+'' ''+left(role_desc,3) [rep]
,sum(case when synchronization_health<>2 then 1 else 0 end) [syncnothealth]
from sys.dm_hadr_availability_replica_states
where is_local=1
group by left(role_desc,3)
)
select distinct
	SERVERPROPERTY(''IsHadrEnabled'') [HADR]
	,SERVERPROPERTY(''IsClustered'') [Cluster]
	,reverse(stuff(reverse((select r2.rep+''; '' as [data()] from rs r2 for xml path(''''))),1,2,'''')) [Status]
	,sum([syncnothealth]) [notsynced]
from rs r1
option (recompile)'
else 
	set @cmd='select SERVERPROPERTY(''IsHadrEnabled'') [HADR],  SERVERPROPERTY(''IsClustered'') [Cluster], NULL [Status],NULL [notsynced]'
exec (@cmd)
8 ноя 18, 13:47    [21728100]     Ответить | Цитировать Сообщить модератору
 Re: Определить AlwaysOn или нет.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
AndrF,

1. Открыть обозреватель объектов
2. Смотреть
8 ноя 18, 14:13    [21728147]     Ответить | Цитировать Сообщить модератору
 Re: Определить AlwaysOn или нет.  [new]
AndrF
Member

Откуда:
Сообщений: 2183
komrad
SERVERPROPERTY('IsHadrEnabled')


Оно. В моем случае применение:

IF ISNULL(CAST(SERVERPROPERTY('IsHadrEnabled') AS bit), 0)<>1
	BEGIN
		...
	END


Так как мне нужно выполнить скрипт на всех серверах не являющимися AlwaysOn...
8 ноя 18, 14:37    [21728191]     Ответить | Цитировать Сообщить модератору
 Re: Определить AlwaysOn или нет.  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5162
AndrF
komrad
SERVERPROPERTY('IsHadrEnabled')


Оно. В моем случае применение:

IF ISNULL(CAST(SERVERPROPERTY('IsHadrEnabled') AS bit), 0)<>1
	BEGIN
		...
	END


Так как мне нужно выполнить скрипт на всех серверах не являющимися AlwaysOn...


а почему не просто так?
if isnull(SERVERPROPERTY('IsHadrEnabled'),0) <> 0 
    begin
    end 


кстати, подобная проверка достаточно поверхностная, так как ни к чему не обязывает - опция может быть выставлена, а реально AO не настроен.
8 ноя 18, 14:47    [21728217]     Ответить | Цитировать Сообщить модератору
 Re: Определить AlwaysOn или нет.  [new]
AndrF
Member

Откуда:
Сообщений: 2183
komrad
кстати, подобная проверка достаточно поверхностная, так как ни к чему не обязывает - опция может быть выставлена, а реально AO не настроен.


Это наше внутреннее, так что будет настроено. Можно, проверить все вплоть до листендеров, но настолько углубляться не хочется.
-------------

Кстати, есть еще вопрос - при выполнении запроса в SSMS c Registered Servers в левой колонке возвращается имя сервера (колонка Server Name). Вот как именно такое можно получить?
8 ноя 18, 15:18    [21728294]     Ответить | Цитировать Сообщить модератору
 Re: Определить AlwaysOn или нет.  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5162
AndrF,

select @@servername
8 ноя 18, 15:27    [21728305]     Ответить | Цитировать Сообщить модератору
 Re: Определить AlwaysOn или нет.  [new]
AndrF
Member

Откуда:
Сообщений: 2183
komrad
select @@servername


Было бы так примитивно - я бы не спрашивал. К примеру, в упомянутой колонке для сервера AlwaysOn выводится имя листендера, а не инстанс активной ноды...

Не, я в принципе, аналог сделать могу, но процесс довольно некрасивый. Хочется чего-то попроще...
8 ноя 18, 22:57    [21728854]     Ответить | Цитировать Сообщить модератору
 Re: Определить AlwaysOn или нет.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
AndrF
komrad
select @@servername



Было бы так примитивно - я бы не спрашивал. К примеру, в упомянутой колонке для сервера AlwaysOn выводится имя листендера, а не инстанс активной ноды...

Не, я в принципе, аналог сделать могу, но процесс довольно некрасивый. Хочется чего-то попроще...
Значит, из строки подключения студия берет.
8 ноя 18, 23:01    [21728860]     Ответить | Цитировать Сообщить модератору
 Re: Определить AlwaysOn или нет.  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5162
AndrF
К примеру, в упомянутой колонке для сервера AlwaysOn выводится имя листендера, а не инстанс активной ноды...

Сильно подозреваю, что у вас он так зарегистрирован в списке серверов, т.е. через имя листенера, а не одного из инстансов/ноды.
К тому же, на одной ноде может быть несколько групп AG и их листенеров (primary replica)

вы пользуетесь registered servers - local servers в студии или настроен/сконфигурирован CMS?
9 ноя 18, 01:17    [21728933]     Ответить | Цитировать Сообщить модератору
 Re: Определить AlwaysOn или нет.  [new]
AndrF
Member

Откуда:
Сообщений: 2183
Гавриленко Сергей Алексеевич
Значит, из строки подключения студия берет.


Или из списка файла registered servers? Вполне возможно.

В принципе же, можно самому раскрутить используя sys.availability_group_listeners...
9 ноя 18, 07:14    [21728960]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить