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ópico Convenções da 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 de NULL.

  • [ @subscriber_db=] 'subscriber_db'
    É o nome do banco de dados de assinatura. subscriber_db é sysname, com um padrão de 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 Agente de Mesclagem será adicionado ao Distribuidor. Se for pull, uma assinatura pull será adicionada sem adicionar um Agente de Mesclagem ao Distribuidor.

    ObservaçãoObservação

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

  • [ @subscriber_type=] 'subscriber_type'
    É o tipo de Assinante. subscriber_typeis nvarchar(15), e pode ter 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.

  • [ @ subscription_priority =] subscription_priority
    É um número que indica a prioridade da assinatura. subscription_priority é real, com um padrão de 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_typeis nvarchar(15), com um padrão de 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.

  • [ @frequency_type=] frequency_type
    É um valor que indica quando o Agente de Mesclagem 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 em que o Agente de Mesclagem é executado. 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 da mesclagem agendada do intervalo de frequência em cada mês. frequency_relative_interval é int, e pode ter 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 por frequency_type. frequency_recurrence_factor é int, com um padrão de NULL.

  • [ @frequency_subday = ] frequency_subday
    É a unidade de 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 de NULL.

  • [ @active_start_time_of_day = ] active_start_time_of_day
    É a hora do dia do primeiro agendamento do Agente de Mesclagem, 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 do último agendamento do Agente de Mesclagem, 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 Agente de Mesclagem, formatada como YYYYMMDD. active_start_date é int, com um padrão de NULL.

  • [ @active_end_date = ] active_end_date
    É a data do último agendamento do Agente de Mesclagem, formatada como YYYYMMDD. active_end_date é int, com um padrão de NULL.

  • [ @optional_command_line=] 'optional_command_line'
    É o prompt de comando opcional a ser executado. optional_command_line é nvarchar(4000), com um padrão de 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 dessa assinatura de mesclagem. description é nvarchar(255), com um padrão de 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 de 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 de 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 da rede de servidor a ser usado para ativação de agente remota. remote_agent_server_name é sysname, com um padrão de NULL.

  • [ @use_interactive_resolver= ] 'use_interactive_resolver'
    Permite resolver conflitos interativamente para todos os artigos que permitem resolução interativa. use_interactive_resolver é nvarchar(5), com um padrão de 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 de 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 de HOST_NAME()" no tópico Filtros 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 Agente de Mesclagem é 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'AdventureWorksReplica'; 
SET @hostname = N'adventure-works\david8'

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

Consulte também

Referência

sp_changemergesubscription (Transact-SQL)

sp_dropmergesubscription (Transact-SQL)

sp_helpmergesubscription (Transact-SQL)

Conceitos

Criar uma assinatura push

Criar uma assinatura pull

Resolução de conflito interativo

Assinar publicações