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
.