Compartilhar via


sp_addmergesubscription (Transact-SQL)

Cria uma assinatura push ou pull. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sp_addmergesubscription [ @publication= ] 'publication'
    [ , [ @subscriber = ] 'subscriber' ]
    [ , [ @subscriber_db= ] 'subscriber_db' ]
    [ , [ @subscription_type= ] 'subscription_type' ]
    [ , [ @subscriber_type= ] 'subscriber_type' ]
    [ , [ @subscription_priority= ] subscription_priority ]
    [ , [ @sync_type= ] '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= ] 'optional_command_line' ]
    [ , [ @description= ] 'description' ]
    [ , [ @enabled_for_syncmgr= ] 'enabled_for_syncmgr' ]
    [ , [ @offloadagent= ] remote_agent_activation]
    [ , [ @offloadserver= ] 'remote_agent_server_name' ]
    [ , [ @use_interactive_resolver= ] 'use_interactive_resolver' ]
    [ , [ @merge_job_name= ] 'merge_job_name' ]
    [ , [ @hostname = ] 'hostname'

Argumentos

  • [ @publication=] 'publication'
    É o nome da publicação. publication é sysname, sem padrão. A publicação já deve existir.

  • [ @subscriber =] 'subscriber'
    É o nome do Assinante. subscriber é sysname, com um padrão NULL.

  • [ @subscriber_db=] 'subscriber_db'
    É o nome do banco de dados de assinatura. subscriber_db é sysname, com um padrão NULL.

  • [ @subscription_type=] 'subscription_type'
    É o tipo de assinatura. subscription_type é nvarchar(15), com um padrão PUSH. Se for push, uma assinatura push será adicionada e o Merge Agent será adicionado ao Distribuidor. Se for pull, uma assinatura pull será adicionada sem adicionar um Merge Agent ao Distribuidor.

    ObservaçãoObservação

    Assinaturas anônimas não precisam usar esse procedimento armazenado.

  • [ @subscriber_type=] 'subscriber_type'
    É o tipo de Assinante. subscriber_type é nvarchar(15), e pode ser um dos valores a seguir.

    Valor

    Descrição

    local (padrão)

    Assinante conhecido somente pelo Publicador.

    global

    Assinante conhecido por todos os servidores.

    No SQL Server 2005 e versões posteriores, assinaturas locais são referidas como assinaturas de cliente e assinaturas globais são referidas como assinaturas de servidor. Para obter mais informações, consulte a seção "Tipos de assinatura" em Como a replicação de mesclagem detecta e soluciona conflitos.

  • [ @ subscription_priority =] subscription_priority
    É um número que indica a prioridade da assinatura. subscription_priority é real, com um padrão NULL. Para assinaturas locais e anônimas, a prioridade é 0.0. Para assinaturas globais, a prioridade deve ser menos que 100.0.

  • [ @sync_type=] 'sync_type'
    É o tipo de sincronização da assinatura. sync_type é nvarchar(15), com um padrão automatic. Pode ser automatic ou none. Se for automatic, o esquema e os dados iniciais das tabelas publicadas serão transferidos para o Assinante primeiro. Se for none, é assumido que o Assinante tem já o esquema e os dados iniciais para tabelas publicadas. Tabelas de sistema e dados sempre são transferidos.

    ObservaçãoObservação

    Recomendamos a não especificar um valor de none. Para obter mais informações, consulte Inicializando uma assinatura de mesclagem sem instantâneo.

  • [ @frequency_type=] frequency_type
    É um valor indicando quando o Merge Agent será executado. frequency_type é int, e pode ser um dos valores a seguir.

    Valor

    Descrição

    1

    Uma vez

    4

    Diariamente

    8

    Semanalmente

    10

    Mensalmente

    20

    Mensalmente, relativo ao intervalo de frequência

    40

    Quando o SQL Server Agent inicia

    NULL (padrão)

     

  • [ @frequency_interval=] frequency_interval
    O dia ou dias de execução do Merge Agent. frequency_interval é int, e pode ser um dos valores a seguir.

    Valor

    Descrição

    1

    Domingo

    2

    Segunda-feira

    3

    Terça-feira

    4

    Quarta-feira

    5

    Quinta-feira

    6

    Sexta-feira

    7

    Sábado

    8

    Dia

    9

    Dias da semana

    10

    Dias de fim de semana

    NULL (padrão)

     

  • [ @frequency_relative_interval=] frequency_relative_interval
    É a ocorrência de mesclagem agendada do intervalo de frequência em cada mês. frequency_relative_interval é int, e pode ser um destes valores.

    Valor

    Descrição

    1

    Primeiro

    2

    Segundo

    4

    Terceiro

    8

    Quarto

    16

    Último

    NULL (padrão)

     

  • [ @frequency_recurrence_factor=] frequency_recurrence_factor
    É o fator de recorrência usado pelo frequency_type. frequency_recurrence_factoré int, com um padrão NULL.

  • [ @frequency_subday=] frequency_subday
    É a unidade para frequency_subday_interval. frequency_subday é int, e pode ser um dos valores a seguir.

    Valor

    Descrição

    1

    Uma vez

    2

    Segundo

    4

    Minuto

    8

    Hora

    NULL (padrão)

     

  • [ @frequency_subday_interval=] frequency_subday_interval
    É a frequência da ocorrência de frequency_subday entre cada mesclagem. frequency_subday_interval é int, com um padrão NULL.

  • [ @active_start_time_of_day=] active_start_time_of_day
    É a hora do dia do primeiro agendamento do Merge Agent, formatada 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 do primeiro agendamento do Merge Agent, 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 agendado, formatada como YYYYMMDD. active_end_date é int, com um padrão NULL.

  • [ @optional_command_line=] 'optional_command_line'
    É o prompt de comando opcional a ser executado. optional_command_line é nvarchar(4000), com um padrão NULL. Esse parâmetro é usado para adicionar um comando que captura a saída e a salva em um arquivo ou para especificar um arquivo de configuração ou atributo.

  • [ @description=] 'description'
    É uma descrição breve desta assinatura de mesclagem. description é nvarchar(255), com um padrão NULL. Esse valor é exibido pelo Replication Monitor na coluna Nome Amigável, que pode ser usada para classificar as assinaturas de uma publicação monitorada.

  • [ @enabled_for_syncmgr=] 'enabled_for_syncmgr'
    Especifica se a assinatura pode ser sincronizada pelo Gerenciador de Sincronização do Microsoft Windows. enabled_for_syncmgr é nvarchar(5), com um padrão FALSE. Se for false, a assinatura não será registrada com o Gerenciador de Sincronização. Se for true, a assinatura será registrada com o Gerenciador de Sincronização e será sincronizada sem iniciar o Microsoft SQL Server Management Studio.

  • [ @offloadagent= ] remote_agent_activation
    Especifica que o agente pode ser ativado remotamente. remote_agent_activation é bit com um padrão 0.

    ObservaçãoObservação

    Esse parâmetro foi preterido e só é mantido para compatibilidade com versões anteriores.

  • [ @offloadserver= ] 'remote_agent_server_name'
    Especifica o nome de rede do servidor a ser usado para uma ativação remota de agente . remote_agent_server_nameé sysname, com um padrão NULL.

  • [ @use_interactive_resolver= ] 'use_interactive_resolver'
    Permite que os conflitos sejam resolvidos interativamente para todos os artigos que permitem resolução interativa. use_interactive_resolver énvarchar(5), com um padrão FALSE.

  • [ @merge_job_name= ] 'merge_job_name'
    O parâmetro @merge_job_name foi preterido e não pode ser definido. merge_job_name é sysname, com um padrão de NULL.

  • [ @hostname= ] 'hostname'
    Substitui o valor retornado por HOST_NAME quando essa função é usada na cláusula WHERE de um filtro com parâmetros. Hostname é sysname, com um padrão NULL.

    Observação importanteImportante

    Por motivos de desempenho, recomendamos que não sejam aplicadas funções a nomes de colunas em cláusulas de filtro de linha com parâmetros, como LEFT([MyColumn]) = SUSER_SNAME(). Se você usar HOST_NAME em uma cláusula de filtro e substituir o valor HOST_NAME, será necessário converter tipos de dados usando CONVERT. Para obter mais informações sobre práticas recomendadas para esse caso, consulte a seção "Substituindo o valor HOST_NAME()" no tópico Filtro de linha com parâmetros.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_addmergesubscription é usado em replicação de mesclagem.

Quando sp_addmergesubscription é executado por um membro da função de servidor fixa sysadmin para criar uma assinatura push, o trabalho do Merge Agent é implicitamente criado e executado na conta de serviço do SQL Server Agent. Recomendamos que você execute sp_addmergepushsubscription_agent e especifique as credenciais de uma conta do Windows diferente, específica de agente para @job_login e @job_password. Para obter mais informações, consulte Modelo de segurança do agente de replicação.

Exemplo

-- 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'AdventureWorks2008R2Replica'; 
SET @hostname = N'adventure-works\david8'

-- Add a push subscription to a merge publication.
USE [AdventureWorks2008R2]
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

Permissões

Somente membros da função de servidor fixa sysadmin ou db_owner podem executar sp_addmergesubscription.