sys.sp_addmergesubscription (Transact-SQL)

Aplica-se a: SQL ServerAzure SQL Managed Instance

Cria uma subscrição push or pull merge. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.

Transact-SQL convenções de sintaxe

Syntax

sys.sp_addmergesubscription
    [ @publication = ] N'publication'
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscription_type = ] N'subscription_type' ]
    [ , [ @subscriber_type = ] N'subscriber_type' ]
    [ , [ @subscription_priority = ] subscription_priority ]
    [ , [ @sync_type = ] N'sync_type' ]
    [ , [ @frequency_type = ] frequency_type ]
    [ , [ @frequency_interval = ] frequency_interval ]
    [ , [ @frequency_relative_interval = ] frequency_relative_interval ]
    [ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
    [ , [ @frequency_subday = ] frequency_subday ]
    [ , [ @frequency_subday_interval = ] frequency_subday_interval ]
    [ , [ @active_start_time_of_day = ] active_start_time_of_day ]
    [ , [ @active_end_time_of_day = ] active_end_time_of_day ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @optional_command_line = ] N'optional_command_line' ]
    [ , [ @description = ] N'description' ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @offloadagent = ] offloadagent ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
    [ , [ @merge_job_name = ] N'merge_job_name' ]
    [ , [ @hostname = ] N'hostname' ]
[ ; ]

Arguments

[ @publication = ] N'publicação'

O nome da publicação. @publication é sysname, sem padrão. A publicação já deve existir.

[ @subscriber = ] N'assinante'

O nome do Assinante. @subscriber é sysname, com um padrão de NULL.

[ @subscriber_db = ] N'subscriber_db'

O nome da base de dados de subscrição. @subscriber_db é sysname, com um padrão de NULL.

[ @subscription_type = ] N'subscription_type'

O tipo de subscrição. @subscription_type é nvarchar(15), com um padrão de push.

  • Se push, uma subscrição push é adicionada e o Merge Agent é adicionado no Distribuidor.
  • Se pull, uma subscrição pull é adicionada sem adicionar um Merge Agent no Distribuidor.

Note

As subscrições anónimas não precisam de usar este procedimento armazenado.

[ @subscriber_type = ] N'subscriber_type'

O tipo de assinante. @subscriber_type é nvarchar(15) e pode ser um dos seguintes valores.

Value Description
local (padrão) Assinante conhecido apenas pelo Publisher.
global Assinante conhecido por todos os servidores.

No SQL Server 2005 (9.x) e versões posteriores, as subscrições locais são designadas como assinaturas de cliente, e as assinaturas globais são designadas como subscrições de servidor.

[ @subscription_priority = ] subscription_priority

Um número a indicar a prioridade da subscrição. @subscription_priority é real, com um padrão de NULL. Para subscrições locais e anónimas, a prioridade é 0.0. Para subscrições globais, a prioridade deve ser inferior a 100.0.

[ @sync_type = ] N'sync_type'

O tipo de sincronização de subscrição. @sync_type é nvarchar(15), com um padrão de automatic.

  • Se automatic, o esquema e os dados iniciais das tabelas publicadas são transferidos primeiro para o Assinante.
  • Se none, assume-se que o Assinante já possui o esquema e os dados iniciais para as tabelas publicadas. As tabelas e dados do sistema são sempre transferidos.

Note

Recomendamos não especificar um valor de none.

[ @frequency_type = ] frequency_type

Um valor que indica quando o Merge Agent é executado. @frequency_type é int, e pode ser um dos seguintes valores.

Value Description
1 Uma vez
4 Diariamente
8 Semanalmente
16 Monthly
32 Mensalmente, em relação ao intervalo de frequência
64 Quando o SQL Server Agent inicia
NULL (padrão)

[ @frequency_interval = ] frequency_interval

O dia ou dias em que o Merge Agent é executado. @frequency_interval é int, e pode ser um dos seguintes valores.

Value Description
1 Domingo
2 Segunda-feira
3 Tuesday
4 Quarta-feira
5 Quinta-feira
6 Sexta-feira
7 Sábado
8 Dia
9 Dias úteis
10 Dias de fim de semana
NULL (padrão)

[ @frequency_relative_interval = ] frequency_relative_interval

A ocorrência programada de fusão do intervalo de frequência em cada mês. @frequency_relative_interval é int, e pode ser um desses valores.

Value Description
1 First
2 Second
4 Third
8 Fourth
16 Último
NULL (padrão)

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

O fator de recorrência utilizado por @frequency_type. @frequency_recurrence_factor é int, com um padrão de NULL.

[ @frequency_subday = ] frequency_subday

A unidade para @frequency_subday_interval. @frequency_subday é int, e pode ser um dos seguintes valores.

Value Description
1 Uma vez
2 Second
4 Minuto
8 Hora
NULL (padrão)

[ @frequency_subday_interval = ] frequency_subday_interval

A frequência de @frequency_subday ocorrer entre cada fusão. @frequency_subday_interval é int, com um padrão de NULL.

[ @active_start_time_of_day = ] active_start_time_of_day

A hora do dia em que o Merge Agent é agendado pela primeira vez, formatado como HHmmss. @active_start_time_of_day é int, com um padrão de NULL.

[ @active_end_time_of_day = ] active_end_time_of_day

A hora do dia em que o Merge Agent deixa de ser agendado, formatada como HHmmss. @active_end_time_of_day é int, com um padrão de NULL.

[ @active_start_date = ] active_start_date

A data em que o Merge Agent é agendado pela primeira vez, formatada como yyyyMMdd. @active_start_date é int, com um padrão de NULL.

[ @active_end_date = ] active_end_date

A data em que o Merge Agent deixa de ser agendada, formatada como yyyyMMdd. @active_end_date é int, com um padrão de NULL.

[ @optional_command_line = ] N'optional_command_line'

O símbolo opcional para executar. @optional_command_line é nvarchar(4000), com um padrão de NULL. Este parâmetro é usado para adicionar um comando que captura a saída e a guarda num ficheiro ou para especificar um ficheiro de configuração ou atributo.

[ @description = ] N'descrição'

Uma breve descrição desta subscrição de fusão. @description é nvarchar(255), com um padrão de NULL. Este valor é exibido pelo Monitor de Replicação na Friendly Name coluna, que pode ser usado para ordenar as subscrições de uma publicação monitorizada.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Especifica se a subscrição pode ser sincronizada através Microsoft Windows Gestor de Sincronização. @enabled_for_syncmgr é nvarchar(5), com um padrão de false.

  • Se false, a subscrição não está registada no Gestor de Sincronização.
  • Se truefor , a subscrição está registada no Gestor de Sincronização e pode ser sincronizada sem necessidade de iniciar o SQL Server Management Studio.

[ @offloadagent = ] agente de descarga

Especifica que o agente pode ser ativado remotamente. @offloadagent é bit, com um padrão de 0.

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts.

[ @offloadserver = ] N'offloadserver'

Especifica o nome da rede do servidor a ser usado para ativação remota de agentes. @offloadserver é sysname, com um padrão de NULL.

[ @use_interactive_resolver = ] N'use_interactive_resolver'

Permite resolver conflitos de forma interativa para todos os artigos que permitem a resolução interativa. @use_interactive_resolver é nvarchar(5), com um padrão de false.

[ @merge_job_name = ] N'merge_job_name'

Este parâmetro está obsoleto e não pode ser definido. @merge_job_name é sysname, com um padrão de NULL.

[ @hostname = ] N'nome de anfitrião'

Sobrepõe o valor devolvido por HOST_NAME quando esta função é usada na cláusula WHERE de um filtro parametrizado. @hostname é sysname, com um padrão de NULL.

Importante

Por razões de desempenho, recomendamos que não aplique funções a nomes de colunas em cláusulas parametrizadas de filtro de linhas, como LEFT([MyColumn]) = SUSER_SNAME(). Se usar HOST_NAME numa cláusula de filtro e sobrescrever o valor HOST_NAME, pode ser necessário converter tipos de dados usando CONVERT. Para mais informações sobre as melhores práticas neste caso, consulte a secção "Sobreescrever o Valor HOST_NAME()" no tópico Filtros Parametrizados - Filtros de Linha Parametrizados.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Remarks

sp_addmergesubscription é usado na replicação por fusão.

Quando sp_addmergesubscription é executado por um membro do papel de servidor fixo sysadmin para criar uma subscrição push, o trabalho Merge Agent é implícitamente criado e executado sob a conta de serviço SQL Server Agent. Recomendamos que execute sp_addmergepushsubscription_agent e especifique as credenciais de uma conta Windows diferente, específica para o agente, para @job_login e @job_password. Para obter mais informações, consulte Replication Agent Security Model.

Exemplos

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica'; 
SET @hostname = N'adventure-works\david8'

-- Add a push subscription to a merge publication.
USE [AdventureWorks2022];
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @hostname = @hostname;

--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

Permissions

Apenas os membros do papel fixo de servidor administrador do sistema ou db_owner papel fixo de base de dados podem executar sp_addmergesubscription.