现在,Server 2016使SSISDB完全可用,我有一个关于职务设置的问题。
当我创建一个执行部署在SSISDB中的SSIS包的SQL代理作业时,在作业步骤中,服务器应该是侦听器名还是物理主机名?
因为如果我使用物理主机名并在两个副本中创建作业,则次要作业总是会失败,因为DB处于只读模式。我还没有尝试把听众的名字,因为我想先征求意见。
发布于 2017-05-04 10:10:46
服务器名应该是侦听器名,如果您遵循这种方法,就可以在一个实例中部署作业了。
您还可以在所有实例中使用物理主机名和部署作业,前提是有下面的代码作为第一步。
- 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/
https://stackoverflow.com/questions/43778949
复制相似问题