sp_addmergesubscription (Transact-SQL)
Cria uma assinatura push ou pull. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.
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çã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çã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çã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.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, 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.
Consulte também