Для иллюстрации этой мысли я привожу в статье два сценария, по одному на каждый подход, см. листинг 1 и листинг 2. Если вы уже знаете, как осуществлять операции резервного копирования при использовании групп доступности AlwaysOn, то наверняка обратили внимание, что соглашение об именовании, которое я применил выше к обеим определяемым пользователем функциям, более или менее точно повторяет встроенную в SQL Server процедуру sys. fn_hadr_backup_is_preferred_replica ().

Таким образом, использование любой из приведенных выше пользовательских функций напоминает выполнение процедуры sys.fn_hadr_backup_ is_preferred_replica () с той лишь разницей, что каждая из публикуемых общим подходам и рациональной основе выполнения пакетных заданий, было показано, что существует два способа выполнения пакетных заданий (или заданий агентов SQL Server, относящихся к базам данных, которые являются частью той или иной группы доступности AlwaysOn).

Мы можем иметь дело с одним из двух вариантов. Либо рассматриваемые задания агента SQL Server могут определить, является ли сервер, где они выполняются, владельцем основной реплики базы данных, которую вы указываете, либо вы можете подключать или отключать все задания целиком в зависимости от того, выполняются ли они на серверах, где размещается основная реплика соответствующего задания.

В любом случае вам потребуется код, позволяющий определить, является ли на данный момент хост SQL Server, на котором выполняется ваш код, владельцем основной реплики для базы данных этой группы доступности Availability Group (AG).

Как и встроенная процедура SQL Server adr_backup_is_preferred_ replica (), обе помещенные выше пользовательские функции, написанные мною, весьма чувствительны к тому, как пользователь называет или определяет имена баз данных либо групп доступности. Так, если вы при вводе имени укажете Toolz вместо Tools, то получите ответ Negative (0). Система не будет указывать на ошибку даже в том случае, если Toolz не является допустимым именем группы доступности или базы данных. Это сделано специально.