Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure SQL Managed Instance
Cria uma subscrição push or pull merge. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.
Transact-SQL convenções de sintaxe
Syntax
sys.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' ]
[ ; ]
Arguments
[ @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 da base de dados de subscrição.
@subscriber_db é sysname, com um padrão de NULL.
[ @subscription_type = ] N'subscription_type'
O tipo de subscrição.
@subscription_type é nvarchar(15), com um padrão de push.
- Se
push, uma subscrição push é adicionada e o Merge Agent é adicionado no Distribuidor. - Se
pull, uma subscrição pull é adicionada sem adicionar um Merge Agent no Distribuidor.
Note
As subscrições anónimas não precisam de usar este procedimento armazenado.
[ @subscriber_type = ] N'subscriber_type'
O tipo de assinante. @subscriber_type é nvarchar(15) e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
local (padrão) |
Assinante conhecido apenas pelo Publisher. |
global |
Assinante conhecido por todos os servidores. |
No SQL Server 2005 (9.x) e versões posteriores, as subscrições locais são designadas como assinaturas de cliente, e as assinaturas globais são designadas como subscrições de servidor.
[ @subscription_priority = ] subscription_priority
Um número a indicar a prioridade da subscrição.
@subscription_priority é real, com um padrão de NULL. Para subscrições locais e anónimas, a prioridade é 0.0. Para subscrições globais, a prioridade deve ser inferior a 100.0.
[ @sync_type = ] N'sync_type'
O tipo de sincronização de subscrição.
@sync_type é nvarchar(15), com um padrão de automatic.
- Se
automatic, o esquema e os dados iniciais das tabelas publicadas são transferidos primeiro para o Assinante. - Se
none, assume-se que o Assinante já possui o esquema e os dados iniciais para as tabelas publicadas. As tabelas e dados do sistema são sempre transferidos.
Note
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.
| Value | Description |
|---|---|
1 |
Uma vez |
4 |
Diariamente |
8 |
Semanalmente |
16 |
Monthly |
32 |
Mensalmente, em relação ao intervalo de frequência |
64 |
Quando o SQL Server Agent inicia |
NULL (padrão) |
[ @frequency_interval = ] frequency_interval
O dia ou dias em que o Merge Agent é executado. @frequency_interval é int, e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
1 |
Domingo |
2 |
Segunda-feira |
3 |
Tuesday |
4 |
Quarta-feira |
5 |
Quinta-feira |
6 |
Sexta-feira |
7 |
Sábado |
8 |
Dia |
9 |
Dias úteis |
10 |
Dias de fim de semana |
NULL (padrão) |
[ @frequency_relative_interval = ] frequency_relative_interval
A ocorrência programada de fusão do intervalo de frequência em cada mês. @frequency_relative_interval é int, e pode ser um desses valores.
| Value | Description |
|---|---|
1 |
First |
2 |
Second |
4 |
Third |
8 |
Fourth |
16 |
Último |
NULL (padrão) |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
O fator de recorrência utilizado 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 seguintes valores.
| Value | Description |
|---|---|
1 |
Uma vez |
2 |
Second |
4 |
Minuto |
8 |
Hora |
NULL (padrão) |
[ @frequency_subday_interval = ] frequency_subday_interval
A frequência de @frequency_subday ocorrer entre cada fusão.
@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, formatada 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, 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 agendada, formatada como yyyyMMdd.
@active_end_date é int, com um padrão de NULL.
[ @optional_command_line = ] N'optional_command_line'
O símbolo opcional para executar.
@optional_command_line é nvarchar(4000), com um padrão de NULL. Este parâmetro é usado para adicionar um comando que captura a saída e a guarda num ficheiro ou para especificar um ficheiro de configuração ou atributo.
[ @description = ] N'descrição'
Uma breve descrição desta subscrição de fusão.
@description é nvarchar(255), com um padrão de NULL. Este valor é exibido pelo Monitor de Replicação na Friendly Name coluna, que pode ser usado para ordenar as subscrições de uma publicação monitorizada.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Especifica se a subscrição pode ser sincronizada através Microsoft Windows Gestor de Sincronização.
@enabled_for_syncmgr é nvarchar(5), com um padrão de false.
- Se
false, a subscrição não está registada no Gestor de Sincronização. - Se
truefor , a subscrição está registada no Gestor de Sincronização e pode ser sincronizada sem necessidade de iniciar o SQL Server Management Studio.
[ @offloadagent = ] agente de descarga
Especifica que o agente pode ser ativado remotamente.
@offloadagent é bit, com um padrão de 0.
Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts.
[ @offloadserver = ] N'offloadserver'
Especifica o nome da rede do servidor a ser usado para ativação remota de agentes.
@offloadserver é sysname, com um padrão de NULL.
[ @use_interactive_resolver = ] N'use_interactive_resolver'
Permite resolver conflitos de forma interativa para todos os artigos que permitem a resolução interativa.
@use_interactive_resolver é nvarchar(5), com um padrão de false.
[ @merge_job_name = ] N'merge_job_name'
Este parâmetro está obsoleto e não pode ser definido.
@merge_job_name é sysname, com um padrão de NULL.
[ @hostname = ] N'nome de anfitrião'
Sobrepõe o valor devolvido por HOST_NAME quando esta função é usada na cláusula WHERE de um filtro parametrizado.
@hostname é sysname, com um padrão de NULL.
Importante
Por razões de desempenho, recomendamos que não aplique funções a nomes de colunas em cláusulas parametrizadas de filtro de linhas, como LEFT([MyColumn]) = SUSER_SNAME(). Se usar HOST_NAME numa cláusula de filtro e sobrescrever o valor HOST_NAME, pode ser necessário converter tipos de dados usando CONVERT. Para mais informações sobre as melhores práticas neste caso, consulte a secção "Sobreescrever o Valor HOST_NAME()" no tópico Filtros Parametrizados - Filtros de Linha Parametrizados.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Remarks
sp_addmergesubscription é usado na replicação por fusão.
Quando sp_addmergesubscription é executado por um membro do papel de servidor fixo sysadmin para criar uma subscrição push, o trabalho Merge Agent é implícitamente criado e executado sob a conta de serviço SQL Server Agent. Recomendamos que execute sp_addmergepushsubscription_agent e especifique as credenciais de uma conta Windows diferente, específica para o 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
Permissions
Apenas os membros do papel fixo de servidor administrador do sistema ou db_owner papel fixo de base de dados podem executar sp_addmergesubscription.