Compartilhar via


sp_addpushsubscription_agent (Transact-SQL)

Adiciona um novo trabalho agendado de agente usado para sincronizar uma assinatura push com uma publicação transacional. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

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

Quando um Publicador é configurado com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, inclusive job_login e job_password, são enviados ao Distribuidor como texto sem-formatação.Você deve criptografar a conexão entre o Publicador e seu Distribuidor remoto antes de executar esse procedimento armazenado.Para obter mais informações, consulte Habilitar conexões criptografadas no Mecanismo de Banco de Dados (SQL Server Configuration Manager).

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

sp_addpushsubscription_agent [ @publication= ] 'publication'
    [ , [ @subscriber = ] 'subscriber' ]
    [ , [ @subscriber_db = ] 'subscriber_db' ]
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] 'subscriber_login' ]
    [ , [ @subscriber_password = ] 'subscriber_password' ]
    [ , [ @job_login = ] 'job_login' ] 
    [ , [ @job_password = ] 'job_password' ] 
    [ , [ @job_name = ] 'job_name' ] 
    [ , [ @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 ]
    [ , [ @dts_package_name = ] 'dts_package_name' ]
    [ , [ @dts_package_password = ] 'dts_package_password' ]
    [ , [ @dts_package_location = ] 'dts_package_location' ]
    [ , [ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' ]
    [ , [ @distribution_job_name = ] 'distribution_job_name' ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @subscriber_provider = ] 'subscriber_provider' ] 
    [ , [ @subscriber_datasrc = ] 'subscriber_datasrc' ] 
    [ , [ @subscriber_location = ] 'subscriber_location' ]
    [ , [ @subscriber_provider_string = ] 'subscriber_provider_string' ] 
    [ , [ @subscriber_catalog = ] 'subscriber_catalog' ]

Argumentos

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

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

  • [ @subscriber_db = ] 'subscriber_db'
    É o nome do banco de dados de assinatura. subscriber_db é sysname, com um padrão de NULL. Para um Assinante não SQL Server, especifique um valor de (destino padrão) para subscriber_db.

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

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

    Para assinaturas de atualização enfileiradas, use Autenticação do SQL Server para conexões com Assinantes, e especifique uma conta diferente para conexão com cada assinante.Para todas as outras assinaturas, use a Autenticação do Windows.

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

  • [ @subscriber_password = ] 'subscriber_password'
    É a senha de Assinante. subscriber_password será necessário se subscriber_security_mode estiver definido como 0. subscriber_password é sysname, com um padrão de NULL. Se uma senha de assinante for usada, será criptografada automaticamente.

    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 impedir acesso não autorizado.

  • [ @job_login = ] 'job_login'
    É o logon da conta do Windows na qual o agente é executado. job_login é nvarchar(257), com um valor padrão de NULL. Essa conta do Windows é sempre usada para conexões do agente com o Distribuidor e para conexões com o Assinante ao usar a autenticação integrada do Windows.

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

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

    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 impedir acesso não autorizado.

  • [ @job_name = ] 'job_name'
    É o nome de um trabalho de agente existente. job_name é sysname, com um valor padrão de 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.

  • [ @frequency_type = ] frequency_type
    É a frequência de agendamento do Agente de Distribuição. 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 (padrão)

    Iniciar automaticamente

    128

    Recorrente

    Dica

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

  • [ @frequency_interval = ] frequency_interval
    É o valor a ser aplicado à frequência definida por frequency_type. frequency_interval é int, com um padrão de 1.

  • [ @frequency_relative_interval = ] frequency_relative_interval
    É a data do Agente de Distribuição. Esse parâmetro é usado quando frequency_type está definido como 32 (mensal relativo). frequency_relative_interval é int e pode ser um dos valores a seguir.

    Valor

    Descrição

    1 (padrão)

    Primeiro

    2

    Segundo

    4

    Terceiro

    8

    Quarto

    16

    Último

  • [ @frequency_recurrence_factor = ] frequency_recurrence_factor
    É o fator de recorrência usado por frequency_type. frequency_recurrence_factor é int, com um padrão de 0.

  • [ @frequency_subday = ] frequency_subday
    É a frequência de reagendamento durante o período definido. frequency_subday é int e pode ser um dos valores a seguir.

    Valor

    Descrição

    1

    Uma vez

    2

    Segundo

    4 (padrão)

    Minuto

    8

    Hora

  • [ @frequency_subday_interval = ] frequency_subday_interval
    É o intervalo de frequency_subday. frequency_subday_interval é int, com um padrão de 5.

  • [ @active_start_time_of_day = ] active_start_time_of_day
    É a hora do dia do primeiro agendamento do Agente de Distribuição, formatada como HHMMSS. active_start_time_of_day é int, com um padrão de 0.

  • [ @active_end_time_of_day = ] active_end_time_of_day
    É a hora do dia do último agendamento do Agente de Distribuição, formatada como HHMMSS. active_end_time_of_day é int, com um padrão de 235959.

  • [ @active_start_date = ] active_start_date
    É a data do primeiro agendamento do Agente de Distribuição, formatada como AAAAMMDD. active_start_date é int, com um padrão de 0.

  • [ @active_end_date = ] active_end_date
    É a data do último agendamento do Agente de Distribuição, formatada como AAAAMMDD. active_end_date é int, com um padrão de 99991231.

  • [ @dts_package_name] 'dts_package_name'
    Especifica o nome do pacote DTS (Data Transformation Services). dts_package_name é um sysname, com um padrão de NULL. Por exemplo, para especificar um nome de pacote DTSPub_Package, o parâmetro seria @dts\_package\_name = N'DTSPub_Package'.

  • [ @dts_package_password = ] 'dts_package_password'
    Especifica a senha necessária para executar o pacote. dts_package_password é sysname, com um padrão de NULL.

    Dica

    Você deve especificar uma senha se dts_package_name for especificado.

  • [ @dts_package_location = ] 'dts_package_location'
    Especifica o local do pacote. dts_package_location é um nvarchar(12), com um padrão de DISTRIBUTOR. O local do pacote pode ser distribuidor ou assinante.

  • [ @enabled_for_syncmgr = ] 'enabled_for_syncmgr'
    Se a assinatura puder ser sincronizada pelo Gerenciador de Sincronização da Microsoft. 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 SQL Server Management Studio.

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

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

  • [ @subscriber_provider= ] 'subscriber_provider'
    É o PROGID (identificador programático) exclusivo com o qual o provedor OLE DB para a fonte de dados não SQL Server é registrado. subscriber_provider é sysname, com o valor padrão de NULL. subscriber_provider deve ser exclusivo para o provedor OLE DB instalado no Distribuidor. subscriber_provider tem suporte apenas para Assinantes que não são do SQL Server.

  • [ @subscriber_datasrc= ] 'subscriber_datasrc'
    É o nome da fonte de dados conforme entendido pelo provedor OLE DB. subscriber_datasrc é nvarchar(4000), com um valor padrão de NULL. subscriber_datasrc é passado como a propriedade DBPROP_INIT_DATASOURCE para inicializar o provedor OLE DB. subscriber_datasrc tem suporte apenas para Assinantes que não são do SQL Server.

  • [ @subscriber_location= ] 'subscriber_location'
    É o local do banco de dados conforme entendido pelo provedor OLE DB. subscriber_location é nvarchar(4000), com um valor padrão de NULL. subscriber_location é passado como a propriedade DBPROP_INIT_LOCATION para inicializar o provedor OLE DB. subscriber_location tem suporte apenas para Assinantes que não são do SQL Server.

  • [ @subscriber_provider_string= ] 'subscriber_provider_string'
    É a cadeia de conexão específica ao provedor OLE DB que identifica a fonte de dados. subscriber_provider_string é nvarchar(4000), com um valor padrão de NULL. subscriber_provider_string é passado para IDataInitialize ou definido como a propriedade DBPROP_INIT_PROVIDERSTRING para inicializar o provedor OLE DB. subscriber_provider_string tem suporte apenas para Assinantes que não são do SQL Server.

  • [ @subscriber_catalog= ] 'subscriber_catalog'
    É o catálogo a ser usado ao fazer uma conexão com o provedor OLE DB. subscriber_catalog é sysname, com o valor padrão de NULL. subscriber_catalog é passado como a propriedade DBPROP_INIT_CATALOG para inicializar o provedor OLE DB. subscriber_catalog tem suporte apenas para Assinantes que não são do SQL Server.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_addpushsubscription_agent é usado em replicação de instantâneo e transacional.

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;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2012Replica';

--Add a push subscription to a transactional publication.
USE [AdventureWorks2012]
EXEC sp_addsubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @destination_db = @subscriptionDB, 
  @subscription_type = N'push';

--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_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 função de banco de dados fixa db_owner podem executar sp_addpushsubscription_agent.

Consulte também

Referência

Procedimentos armazenados de replicação (Transact-SQL)

sp_addsubscription (Transact-SQL)

sp_changesubscription (Transact-SQL)

sp_dropsubscription (Transact-SQL)

sp_helpsubscription (Transact-SQL)

Conceitos

Criar uma assinatura push

Criar uma assinatura para um Assinante não SQL Server

Assinar publicações