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/

Другие вопросы по тегам