SSISDB и Всегда включен. Как запланировать работу?
Теперь, когда SQL Server 2016 обеспечивает высокую доступность SSISDB, у меня возник вопрос относительно настройки задания.
Когда я создаю задание агента SQL, которое выполняет пакет служб SSIS, развернутый в SSISDB, должен ли на этапе задания сервер быть именем прослушивателя или именем физического хоста?
Я спрашиваю об этом, потому что, если я использую имя физического хоста и создаю задание в обеих репликах, вторичные задания всегда будут сбои, потому что БД находится в режиме только для чтения. Я еще не пытался назвать имя Слушателя, потому что сначала хотел узнать мнение.
1 ответ
Имя сервера должно быть именем слушателя, если вы придерживаетесь этого подхода, достаточно развернуть задание в одном экземпляре.
вы также можете использовать физические имена хостов и развертывать задания во всех случаях, если в качестве первого шага у вас есть фрагмент кода ниже
- fn_hadr_group_is_primary
USE master;
GO
IF OBJECT_ID('dbo.fn_hadr_group_is_primary', 'FN') IS NOT NULL
DROP FUNCTION dbo.fn_hadr_group_is_primary;
GO
CREATE FUNCTION dbo.fn_hadr_group_is_primary (@AGName sysname)
RETURNS bit
AS
BEGIN;
DECLARE @PrimaryReplica sysname;
SELECT
@PrimaryReplica = hags.primary_replica
FROM sys.dm_hadr_availability_group_states hags
INNER JOIN sys.availability_groups ag ON ag.group_id = hags.group_id
WHERE ag.name = @AGName;
IF UPPER(@PrimaryReplica) = UPPER(@@SERVERNAME)
RETURN 1; -- primary
RETURN 0; -- not primary
END;
В этом посте также рассматриваются некоторые общие проблемы, которые необходимо устранить.
https://blogs.msdn.microsoft.com/mattm/2012/09/19/ssis-with-alwayson/