SSISDB 和永远在线。如何安排作业?
SSISDB and Always On. How to schedule jobs?
现在 SQL Server 2016 使 SSISDB 完全高可用,我对作业设置有疑问。
当我创建一个 SQL 执行部署在 SSISDB 中的 SSIS 包的代理作业时,作业步骤中的服务器应该是侦听器名称还是物理主机名?
我问这个是因为如果我使用物理主机名并在两个副本中创建作业,辅助作业将始终失败,因为数据库处于只读模式。 Listener的名字我还没有尝试,因为我想先征求意见
服务器名称应该是监听器名称,如果按照这种方式,一次部署作业就足够了
您还可以在所有实例中使用物理主机名和部署作业,前提是您有以下代码作为第一步
- 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;
本文post还涉及一些需要注意的常见问题
https://blogs.msdn.microsoft.com/mattm/2012/09/19/ssis-with-alwayson/
现在 SQL Server 2016 使 SSISDB 完全高可用,我对作业设置有疑问。
当我创建一个 SQL 执行部署在 SSISDB 中的 SSIS 包的代理作业时,作业步骤中的服务器应该是侦听器名称还是物理主机名?
我问这个是因为如果我使用物理主机名并在两个副本中创建作业,辅助作业将始终失败,因为数据库处于只读模式。 Listener的名字我还没有尝试,因为我想先征求意见
服务器名称应该是监听器名称,如果按照这种方式,一次部署作业就足够了
您还可以在所有实例中使用物理主机名和部署作业,前提是您有以下代码作为第一步
- 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;
本文post还涉及一些需要注意的常见问题
https://blogs.msdn.microsoft.com/mattm/2012/09/19/ssis-with-alwayson/