Partilhar via


sp_addmergesubscription (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Cria uma assinatura push ou pull. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

Convenções de sintaxe de Transact-SQL

Sintaxe

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' ]
[ ; ]

Argumentos

@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 do banco de dados de assinatura. @subscriber_db é sysname, com um padrão de NULL.

@subscription_type [ = ] N'subscription_type'

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

  • Se push, uma assinatura push é adicionada e o Merge Agent é adicionado no Distribuidor.
  • Se pull, uma assinatura pull será adicionada sem adicionar um Merge Agent no Distribuidor.

Observação

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

@subscriber_type [ = ] N'subscriber_type'

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

Valor Descrição
local (padrão) Assinante conhecido somente pelo Publicador.
global Assinante conhecido por todos os servidores.

No SQL Server 2005 (9.x) e versões posteriores, as assinaturas locais são chamadas de assinaturas de cliente e as assinaturas globais são chamadas de 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 menor que 100.0.

@sync_type [ = ] N'sync_type'

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

  • Se automatic, o esquema e os dados iniciais das tabelas publicadas serão transferidos primeiro para o Assinante.
  • Se none, presume-se que o Assinante já tenha o esquema e os dados iniciais das tabelas publicadas. Tabelas de sistema e dados sempre são transferidos.

Observação

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.

Valor Descrição
1 Uma vez
4 Diário
8 Semanal
10 Mensal
20 Mensalmente, relativo ao intervalo de frequência
40 Quando o SQL Server Agent é iniciado
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 seguintes valores.

Valor Descrição
1 Sunday
2 Monday
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 programada do intervalo de frequência em cada mês. @frequency_relative_interval é int e pode ser um desses valores.

Valor Descrição
1 First
2 Segundo
4 Terceiro
8 Quarto
16 Last
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 para @frequency_subday_interval. @frequency_subday é int e pode ser um dos valores a seguir.

Valor Descrição
1 Uma vez
2 Second
4 Minuto
8 Hora
NULL (padrão)

@frequency_subday_interval [ = ] frequency_subday_interval

A frequência com que @frequency_subday ocorrem 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 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, formatado 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, formatado 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, formatado como yyyyMMdd. @active_end_date é int, com um padrão de NULL.

@optional_command_line [ = ] N'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 [ = ] N'descrição'

Uma breve descrição dessa assinatura de mesclagem. @description é nvarchar(255), com um padrão de NULL. Esse valor é exibido pelo Replication Monitor na Friendly Name coluna, que pode ser usada para classificar as assinaturas de uma publicação monitorada.

@enabled_for_syncmgr [ = ] N'enabled_for_syncmgr'

Especifica se a assinatura pode ser sincronizada por meio do Gerenciador de Sincronização do Microsoft Windows. @enabled_for_syncmgr é nvarchar(5), com um padrão de false.

  • Se false, a assinatura não está registrada no Gerenciador de Sincronização.
  • Se true, a assinatura é registrada no Gerenciador de Sincronização e pode ser sincronizada sem iniciar o SQL Server Management Studio.

@offloadagent [ = ] agente de descarregamento

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

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

@offloadserver [ = ] N'offloadserver'

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

@use_interactive_resolver [ = ] N'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 [ = ] N'merge_job_name'

Esse parâmetro foi preterido e não pode ser definido. @merge_job_name é sysname, com um padrão de NULL.

@hostname [ = ] N'nome do host'

Substitui o valor retornado por HOST_NAME quando essa função é usada na cláusula WHERE de um filtro parametrizado. @hostname é sysname, com um padrão de NULL.

Importante

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, talvez seja necessário converter tipos de dados usando CONVERT. Para obter mais informações sobre as práticas recomendadas para esse caso, consulte a seção "Substituindo o valor HOST_NAME()" no tópico Filtros com parâmetros - Filtros de linha com parâmetros.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_addmergesubscription é usado na 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 é criado implicitamente 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 e específica do 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

Permissões

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