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 de publicação.

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 Criptografando conexões com o SQL Server.

Ícone de vínculo de tópicoConvenções de 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 se conectar 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 do Assinante. subscriber_password será exigido 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 evitar o acesso não autorizado.

  • [ @job_login = ] 'job_login'
    É o logon para a conta do Windows na qual o agente é executado. job_login é nvarchar(257), com um valor padrão 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 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

    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.

  • [ @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.

  • [ @frequency_type = ] frequency_type
    É a freqüência de agendamento do Distribution 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 (padrão)

    Autoiniciar

    128

    Recorrente

    ObservaçãoObservação

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

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

  • [ @frequency_relative_interval = ] frequency_relative_interval
    É a data do Distribution Agent. É o parâmetro usado quando frequency_type é definido como 32 (relativo ao mês). 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 freqüência de reagendamento durante o período definido. frequency_subday é inte 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 Distribution Agent, 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 em que o Distribution Agent deixa de ser agendado, 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 Distribution Agent, formatada como YYYYMMDD. active_start_date é int, com um padrão de 0.

  • [ @active_end_date = ] active_end_date
    É a data em que o Distribution Agent deixa de ser agendado, formatada como YYYYMMDD. 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 exigida para executar o pacote. dts_package_password é sysname com um padrão de NULL.

    ObservaçãoObservação

    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 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 poderá 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 NULL.

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

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

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

  • [ @subscriber_provider_string= ] 'subscriber_provider_string'
    É a seqüência de conexão específica do provedor OLE DB que identifica a fonte de dados. subscriber_provider_string é nvarchar(4000), com um valor padrão NULL. subscriber_provider_string é passada para IDataInitialize ou definida como a propriedade DBPROP_INIT_PROVIDERSTRING para inicializar o provedor OLE DB. subscriber_provider_string só tem suporte para Assinantes não-SQL Server.

  • [ @subscriber_catalog= ] 'subscriber_catalog'
    É o catálogo a ser usado ao efetuar uma conexão com o provedor OLE DB. subscriber_catalog é sysname, com um valor padrão NULL. subscriber_catalog é passado como a propriedade DBPROP_INIT_CATALOG para inicializar o provedor OLE DB. subscriber_catalog só tem suporte para Assinantes não-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'AdventureWorks2008R2Replica';

--Add a push subscription to a transactional publication.
USE [AdventureWorks2008R2]
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.