Я пытаюсь настроить процесс, который будет проверять задания агентов на всех серверах в группе доступности и сообщать обо всех, которые могут отсутствовать во вторичных репликах.
У меня есть настройка CMS со всеми серверами изAG и может выполнять запрос заданий агента через реплики, но я хочу только вернуть задания, которые есть на некоторых серверах, но не на всех.
Я написал запрос, чтобы получить эту информацию с помощью COUNT (), но поскольку результаты запроса группируются по серверу, это не работает.Я также попытался поместить результаты во временную таблицу, чтобы посмотреть, поможет ли это, но, похоже, это не имеет большого значения.
В AG есть четыре сервера, и следующий запрос должен возвращать имена всех заданий, которые находятся не на всех четырех серверах, но, поскольку он, похоже, тоже возвращает имя сервера, он не распознает их какодно и то же задание.
CREATE TABLE #jobs (
JobName NVARCHAR(128))
INSERT INTO #jobs
SELECT name JobName
FROM sysjobs
SELECT *
FROM #jobs
GROUP BY JobName
HAVING COUNT(*) < 4
ORDER BY JobName
DROP TABLE #jobs
Запрос в том виде, в котором он существует, выдает набор результатов, например ниже:
+------------+------------------------------------------+
| ServerName | JobName |
+------------+------------------------------------------+
| ServerA | DBA DatabaseBackup - AG_DATABASES - FULL |
| ServerA | OutputFile Cleanup |
| ServerB | DBA DatabaseBackup - AG_DATABASES - FULL |
| ServerB | IndexOptimize - USER_DATABASES |
| ServerC | DBA DatabaseBackup - AG_DATABASES - FULL |
| ServerB | IndexOptimize - USER_DATABASES |
| ServerD | DBA DatabaseBackup - AG_DATABASES - FULL |
| ServerD | Output File Cleanup |
+------------+------------------------------------------+
Задание DBA DatabaseBackup - AG_DATABASES - FULL существует для всех четырех серверовпоэтому я не хочу, чтобы это возвращалось, но из-за неявного столбца servername, который исходит из соединения CMS, он не распознает их как одно и то же значение.