Partilhar via


sp_addmergepullsubscription_agent (Transact-SQL)

Adiciona um novo trabalho de agente para agendar a sincronização de uma assinatura pull com uma publicação de mesclagem. Esse procedimento armazenado é executado no Assinante, no banco de dados de assinatura.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sp_addmergepullsubscription_agent [ [ @name = ] 'name' ] 
        , [ @publisher = ] 'publisher' 
        , [ @publisher_db = ] 'publisher_db'
        , [ @publication =] 'publication' 
    [ , [ @publisher_security_mod e= ] publisher_security_mode ] 
    [ , [ @publisher_login = ] 'publisher_login' ] 
    [ , [ @publisher_password = ] 'publisher_password' ] 
    [ , [ @publisher_encrypted_password = ] publisher_encrypted_password ] 
    [ , [ @subscriber = ] 'subscriber' ] 
    [ , [ @subscriber_db = ] 'subscriber_db' ] 
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ] 
    [ , [ @subscriber_login = ] 'subscriber_login' ] 
    [ , [ @subscriber_password= ] 'subscriber_password' ] 
    [ , [ @distributor = ] 'distributor' ] 
    [ , [ @distributor_security_mode = ] distributor_security_mode ] 
    [ , [ @distributor_login = ] 'distributor_login' ] 
    [ , [ @distributor_password = ] 'distributor_password' ] 
    [ , [ @encrypted_password = ] encrypted_password ] 
    [ , [ @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' ] 
    [ , [ @merge_jobid = ] merge_jobid ] 
    [ , [ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' ] 
    [ , [ @ftp_address = ] 'ftp_address' ] 
    [ , [ @ftp_port = ] ftp_port ] 
    [ , [ @ftp_login = ] 'ftp_login' ] 
    [ , [ @ftp_password = ] 'ftp_password' ]  
    [ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ] 
    [ , [ @working_directory = ] 'working_directory' ] 
    [ , [ @use_ftp = ] 'use_ftp' ] 
    [ , [ @reserved = ] 'reserved' ] 
    [ , [ @use_interactive_resolver = ] 'use_interactive_resolver' ] 
    [ , [ @offloadagent = ] 'remote_agent_activation' ] 
    [ , [ @offloadserver = ] 'remote_agent_server_name'] 
    [ , [ @job_name = ] 'job_name' ] 
    [ , [ @dynamic_snapshot_location = ] 'dynamic_snapshot_location' ]
    [ , [ @use_web_sync = ] use_web_sync ]
        [ , [ @internet_url = ] 'internet_url' ]
    [ , [ @internet_login = ] 'internet_login' ]
        [ , [ @internet_password = ] 'internet_password' ]
    [ , [ @internet_security_mode = ] internet_security_mode ]
        [ , [ @internet_timeout = ] internet_timeout ]
    [ , [ @hostname = ] 'hostname' ]
        [ , [ @job_login = ] 'job_login' ] 
    [ , [ @job_password = ] 'job_password' ] 

Argumentos

  • [ @name = ] 'name'
    É o nome do agente. name é sysname, com um padrão de NULL.

  • [ @publisher = ] 'publisher'
    O nome do servidor do Publicador. publisher é sysname, sem padrão.

  • [ @publisher_db = ] 'publisher_db'
    O nome do banco de dados Publicador. publisher_db é sysname, sem padrão.

  • [ @publication = ] 'publication'
    É o nome da publicação. publication é sysname, sem padrão.

  • [ @publisher_security_mode = ] publisher_security_mode
    É o modo de segurança a ser usado ao se conectar a um Publicador na sincronização. publisher_security_mode é int, com um padrão 1. Se for 0, especificará Autenticação do SQL Server. Se for 1, especificará Autenticação do Windows.

    Observação sobre segurançaObservação sobre segurança

    Quando possível, use a Autenticação do Windows.

  • [ @publisher_login = ] 'publisher_login'
    É o logon a ser usado ao se conectar a um Publicador na sincronização. publisher_login é sysname, com um padrão NULL.

  • [ @publisher_password = ] 'publisher_password'
    É a senha usada na conexão com o Publicador. publisher_password é sysname, com um padrão NULL.

    Observação sobre segurançaObservação sobre segurança

    Não use uma senha em branco. Use uma senha forte.Quando possível, solicite que os usuários insiram as credenciais de segurança em tempo de execução. Se for necessário armazenar credenciais em um arquivo de script, você deverá proteger o arquivo para evitar o acesso não autorizado.

  • [ @publisher_encrypted_password = ]publisher_encrypted_password
    A configuração de publisher_encrypted_password não tem mais suporte. Tentar definir esse parâmetro bit como 1 resultará em erro.

  • [ @subscriber = ] 'subscriber'
    É o nome do Assinante. subscriber é sysname, com um padrão NULL.

  • [ @subscriber_db = ] 'subscriber_db'
    É o nome do Assinante. subscriber_db é sysname, com um padrão NULL.

  • [ @subscriber_security_mode = ] subscriber_security_mode
    É o modo de segurança a ser usado ao se conectar a um Assinante na sincronização. subscriber_security_mode é int, com um padrão de 1. Se for 0, especificará Autenticação do SQL Server. Se for 1, especificará Autenticação do Windows.

    ObservaçãoObservação

    Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores dos scripts. O Merge Agent sempre conecta ao Assinante local usando a Autenticação do Windows. Se um valor for especificado para esse parâmetro, uma mensagem de aviso será retornada, mas o valor será ignorado.

  • [ @subscriber_login = ] 'subscriber_login'
    É o logon do Assinante a ser usado ao se conectar a um Assinante na sincronização. subscriber_login será requerido se subscriber_security_mode for definido como 0. subscriber_login é sysname, com um padrão NULL.

    ObservaçãoObservação

    Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores dos scripts. Se um valor for especificado para esse parâmetro, uma mensagem de aviso será retornada, mas o valor será ignorado.

  • [ @subscriber_password = ] 'subscriber_password'
    É a senha do Assinante para Autenticação do SQL Server. subscriber_password será requerido se subscriber_security_mode for definido como 0. subscriber_password é sysname, com um padrão NULL.

    ObservaçãoObservação

    Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores dos scripts. Se um valor for especificado para esse parâmetro, uma mensagem de aviso será retornada, mas o valor será ignorado.

  • [ @distributor = ] 'distributor'
    É o nome do Distribuidor. distributor é sysname, com um padrão de publisher; ou seja, o Publicador é também o Distribuidor.

  • [ @distributor_security_mode = ] distributor_security_mode
    É o modo de segurança a ser usado ao se conectar a um Distribuidor na sincronização. distributor_security_mode é int, com um padrão 0. 0 especifica Autenticação do SQL Server . 1 especifica Autenticação do Windows.

    Observação sobre segurançaObservação sobre segurança

    Quando possível, use a Autenticação do Windows.

  • [ @distributor_login = ] 'distributor_login'
    É o logon do Distribuidor a ser usado ao se conectar a um Distribuidor na sincronização. distributor_login será requerido se distributor_security_mode for definido como 0. distributor_login é sysname, com um padrão NULL.

  • [ @distributor_password = ] 'distributor_password'
    É a senha do Distribuidor. distributor_password será exigido se distributor_security_mode estiver definido como 0. distributor_password é sysname, com um padrão NULL.

    Observação sobre segurançaObservação sobre segurança

    Não use uma senha em branco. Use uma senha forte.Quando possível, solicite que os usuários insiram as credenciais de segurança em tempo de execução. Se for necessário armazenar credenciais em um arquivo de script, você deverá proteger o arquivo para evitar o acesso não autorizado.

  • [ @encrypted_password = ] encrypted_password
    A configuração de encrypted_password não tem mais suporte. Tentar definir esse parâmetro bit como 1 resultará em erro.

  • [ @frequency_type = ] frequency_type
    É a freqüência de agendamento do Merge Agent. frequency_type é int, e pode ser um dos valores a seguir.

    Valor

    Descrição

    1

    Uma vez

    2

    Sob demanda

    4

    Diariamente

    8

    Semanalmente

    16

    Mensalmente

    32

    Relativo ao mês

    64

    Iniciar automaticamente

    128

    Recorrente

    NULL (padrão)

     

    ObservaçãoObservação

    A especificação de um valor 64 faz o Merge Agent executar em modo contínuo. Isso corresponde a definir o parâmetro - Continuous para o agente. Para obter mais informações, consulte Replication Merge Agent.

  • [ @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 data do Merge Agent. Esse parâmetro é usado quando frequency_type é definido como 32 (relativo ao 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 por frequency_type. frequency_recurrence_factor é int, com um padrão NULL.

  • [ @frequency_subday = ] frequency_subday
    É a freqüência de reagendamento durante o período definido. frequency_subday é inte pode ser um destes valores.

    Valor

    Descrição

    1

    Uma vez

    2

    Segundo

    4

    Minuto

    8

    Hora

    NULL (padrão)

     

  • [ @frequency_subday_interval = ] frequency_subday_interval
    É o intervalo para frequency_subday. 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 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 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'
    É um prompt de comando opcional fornecido ao Merge Agent. optional_command_line é nvarchar(255), com um padrão de ' '. Pode ser usado para fornecer parâmetros adicionais ao Merge Agent, como no exemplo seguinte que aumenta o tempo limite de consulta padrão para 600 segundos:

    @optional_command_line = N'-QueryTimeOut 600'
    
  • [ @merge_jobid = ] merge_jobid
    É o parâmetro de saída para a ID do trabalho. merge_jobid é binary(16), com um padrão NULL.

  • [ @enabled_for_syncmgr = ] 'enabled_for_syncmgr'
    Especifica se a assinatura pode ser sincronizada pelo Gerenciador de Sincronização do 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 SQL Server Management Studio.

  • [ @ftp_address = ] 'ftp_address'
    Somente para compatibilidade com versões anteriores.

  • [ @ftp_port = ] ftp_port
    Somente para compatibilidade com versões anteriores.

  • [ @job_login = ] 'ftp_login'
    Somente para compatibilidade com versões anteriores.

  • [ @ftp_password = ] 'ftp_password'
    Somente para compatibilidade com versões anteriores.

  • [ @alt_snapshot_folder = ] 'alternate_snapshot_folder'
    Especifica o local do qual retirar os arquivos de instantâneo. alternate_snapshot_folder é nvarchar(255), com um padrão NULL. Se for NULL, os arquivos de instantâneo serão retirados do local padrão especificado pelo Publicador.

  • [ @working_directory = ] 'working_directory'
    É o nome do diretório de trabalho usado para armazenar dados e arquivos de esquema temporariamente para a publicação quando o FTP for usado para transferir arquivos de instantâneo. working_directory é nvarchar(255), com um padrão NULL.

  • [ @use_ftp = ] 'use_ftp'
    Especifica o uso de FTP em vez do protocolo típico para recuperar instantâneos. use_ftp é nvarchar(5), com um padrão FALSE.

  • [ @reserved = ] 'reserved'
    Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

  • [ @use_interactive_resolver = ] 'use_interactive_resolver' ]
    Usa resolvedor interativo para resolver conflitos em todos os artigos que permitem resolução interativa. use_interactive_resolver é nvarchar(5), com um padrão FALSE.

  • [ @offloadagent = ] 'remote_agent_activation'

    ObservaçãoObservação

    A ativação do agente remoto foi preterida e não tem mais suporte. Esse parâmetro tem suporte somente para manter a compatibilidade com versões anteriores de scripts. A definição de remote_agent_activation com um valor diferente de false irá gerar um erro.

  • [ @offloadserver = ] 'remote_agent_server_name'

    ObservaçãoObservação

    A ativação do agente remoto foi preterida e não tem mais suporte. Esse parâmetro tem suporte somente para manter a compatibilidade com versões anteriores de scripts. A definição de remote_agent_server_name como qualquer valor diferente de NULL gerará um erro.

  • [ @job_name = ] 'job_name' ]
    É o nome de um trabalho de agente existente. job_name é sysname com um valor padrão NULL. Esse parâmetro só é especificado quando a assinatura é sincronizada usando um trabalho existente em vez de um trabalho recém-criado (o padrão). Se você for um membro da função de servidor fixa sysadmin terá de especificar job_login e job_password ao especificar job_name.

  • [ @dynamic_snapshot_location = ] 'dynamic_snapshot_location' ]
    O caminho da pasta onde os arquivos de instantâneo serão lidos se um instantâneo de dados filtrado for usado. dynamic_snapshot_location é nvarchar(260), com um padrão NULL. Para obter mais informações, consulte Filtro de linha com parâmetros.

  • [ @ use_web_sync = ] use_web_sync
    Indica que a sincronização da Web está habilitada. use_web_sync é bit, com um padrão de 0. 1 especifica que a assinatura pull pode ser sincronizada pela internet usando o HTTP.

  • [ @internet_url = ] 'internet_url'
    É o local do ouvinte de replicação (REPLISAPI.DLL) para sincronização da Web. internet_url é nvarchar(260), com um padrão NULL. internet_url é um URL completamente qualificado, no formato http://server.domain.com/directory/replisapi.dll. Se o servidor for configurado para ouvir em uma porta diferente da porta 80, o número da porta também deverá ser fornecido no formato http://server.domain.com:portnumber/directory/replisapi.dll, onde portnumber representa a porta.

  • [ @internet_login = ] 'internet_login'
    É o logon que o Merge Agent usa ao se conectar ao servidor da Web que está hospedando a sincronização da Web, usando Autenticação Básica HTTP. internet_login é sysname, com um padrão NULL.

  • [ @internet_password = ] 'internet_password'
    É a senha que o Merge Agent usa ao se conectar ao servidor da Web que está hospedando a sincronização da Web, usando Autenticação Básica HTTP. internet_password é nvarchar(524), com um valor padrão de NULL.

    Observação sobre segurançaObservação sobre segurança

    Não use uma senha em branco. Use uma senha forte.

  • [ @internet_security_mode = ] internet_security_mode
    É o método de autenticação usado pelo Merge Agent ao se conectar ao servidor da Web durante a sincronização da Web, usando HTTPS. internet_security_mode é int e pode ser um destes valores.

    Valor

    Descrição

    0

    Autenticação Básica é usada.

    1 (padrão)

    Autenticação Integrada do Windows é usada.

    ObservaçãoObservação

    Recomendamos o uso da Autenticação Básica com sincronização da Web. Para usar sincronização da Web, você deve fazer uma conexão SSL ao servidor Web. Para obter mais informações, consulte Configurando a sincronização da Web.

  • [ @internet_timeout = ] internet_timeout
    É o período de tempo, em segundos, antes que uma solicitação de sincronização da Web expire. internet_timeout é int, com um padrão de 300 segundos.

  • [ @hostname = ] 'hostname'
    Substitui o valor 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.

  • [ @job_login = ] 'job_login'
    É o logon para a conta do Windows na qual o agente é executado. job_login é nvarchar(257), sem padrão. Essa conta do Windows é sempre usada para conexões do agente com o Assinante e para conexões com o Distribuidor e o Publicador ao usar a Autenticação Integrada do Windows.

  • [ @job_password = ] 'job_password'
    É a senha para a conta do Windows na qual o agente é executado. job_password é sysname, sem padrão.

    Observação sobre segurançaObservação sobre segurança

    Não armazene informações de autenticação em arquivos de script. Para melhor segurança, nomes de logon e senhas devem ser fornecidos em tempo de execução.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_addmergepullsubscription_agent é usado em replicação de mesclagem e usa funcionalidade semelhante a sp_addpullsubscription_agent.

O modelo de segurança do agente de replicação mudou significativamente a partir do SQL Server 2000. Para obter um exemplo de como especificar configurações de segurança corretamente ao executar sp_addmergepullsubscription_agent, consulte Como criar uma assinatura push (Programação Transact-SQL 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".

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorksReplica]
EXEC sp_addmergepullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password),
  @hostname = @hostname;
GO

Permissões

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