sp_addpublication (Transact-SQL)

Aplica-se a: SQL Server (todas as versões com suporte) Instância Gerenciada de SQL do Azure

Cria uma publicação de instantâneo ou transacional. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

Topic link iconConvenções de sintaxe do Transact-SQL

Sintaxe

  
sp_addpublication [ @publication = ] 'publication'  
    [ , [ @taskid = ] tasked ]  
    [ , [ @restricted = ] 'restricted' ]  
    [ , [ @sync_method = ] 'sync_method' ]  
    [ , [ @repl_freq = ] 'repl_freq' ]  
    [ , [ @description = ] 'description' ]  
    [ , [ @status = ] 'status' ]  
    [ , [ @independent_agent = ] 'independent_agent' ]  
    [ , [ @immediate_sync = ] 'immediate_sync' ]  
    [ , [ @enabled_for_internet = ] 'enabled_for_internet' ]  
    [ , [ @allow_push = ] 'allow_push'  
    [ , [ @allow_pull = ] 'allow_pull' ]  
    [ , [ @allow_anonymous = ] 'allow_anonymous' ]  
    [ , [ @allow_sync_tran = ] 'allow_sync_tran' ]  
    [ , [ @autogen_sync_procs = ] 'autogen_sync_procs' ]  
    [ , [ @retention = ] retention ]  
    [ , [ @allow_queued_tran= ] 'allow_queued_updating' ]  
    [ , [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder' ]  
    [ , [ @alt_snapshot_folder= ] 'alternate_snapshot_folder' ]  
    [ , [ @pre_snapshot_script= ] 'pre_snapshot_script' ]  
    [ , [ @post_snapshot_script= ] 'post_snapshot_script' ]  
    [ , [ @compress_snapshot= ] 'compress_snapshot' ]  
    [ , [ @ftp_address = ] 'ftp_address' ]  
    [ , [ @ftp_port= ] ftp_port ]  
    [ , [ @ftp_subdirectory = ] 'ftp_subdirectory' ]  
    [ , [ @ftp_login = ] 'ftp_login' ]  
    [ , [ @ftp_password = ] 'ftp_password' ]  
    [ , [ @allow_dts = ] 'allow_dts' ]  
    [ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]  
    [ , [ @conflict_policy = ] 'conflict_policy' ]  
    [ , [ @centralized_conflicts = ] 'centralized_conflicts' ]   
    [ , [ @conflict_retention = ] conflict_retention ]  
    [ , [ @queue_type = ] 'queue_type' ]  
    [ , [ @add_to_active_directory = ] 'add_to_active_directory' ]  
    [ , [ @logreader_job_name = ] 'logreader_agent_name' ]  
    [ , [ @qreader_job_name = ] 'queue_reader_agent_name' ]  
    [ , [ @publisher = ] 'publisher' ]   
    [ , [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup' ]  
    [ , [ @replicate_ddl = ] replicate_ddl ]  
    [ , [ @enabled_for_p2p = ] 'enabled_for_p2p' ]  
    [ , [ @publish_local_changes_only = ] 'publish_local_changes_only' ]  
    [ , [ @enabled_for_het_sub = ] 'enabled_for_het_sub' ]  
    [ , [ @p2p_conflictdetection = ] 'p2p_conflictdetection' ]  
    [ , [ @p2p_originator_id = ] p2p_originator_id  ]
    [ , [ @p2p_continue_onconflict = ] 'p2p_continue_onconflict'  ]
    [ , [ @allow_partition_switch = ] 'allow_partition_switch'  ]
    [ , [ @replicate_partition_switch = ] 'replicate_partition_switch' ] 
    [ , [ @p2p_conflictdetection_policy = ] 'originatorid' | 'lastwriter' ]

Argumentos

[ @publication = ] 'publication' É o nome da publicação a ser criada. publicação é sysname, sem padrão. O nome deve ser exclusivo no banco de dados.

[ @taskid = ] taskid Com suporte apenas para compatibilidade com versões anteriores; use sp_addpublication_snapshot (Transact-SQL).

[ @restricted = ] 'restricted' Com suporte apenas para compatibilidade com versões anteriores; use default_access.

[ @sync_method = ] _'sync_method' É o modo de sincronização. sync_method é nvarchar(13) e pode ser um dos valores a seguir.

Valor Descrição
native Produz saída de programa de cópia em massa em modo nativo de todas as tabelas. Não há suporte para o Oracle Publishers.
character Produz saída de programa de cópia em massa em modo de caractere de todas as tabelas. Para um Publicador Oracle, o caractereé válido apenas para replicação de instantâneo.
Simultâneas Produz saída de programa de cópia em massa em modo nativo de todas as tabelas, mas não bloqueia as tabelas durante o instantâneo. Com suporte somente para publicações transacionais. Não há suporte para o Oracle Publishers.
concurrent_c Produz saída de programa de cópia em massa em modo de caractere de todas as tabelas, mas não bloqueia as tabelas durante o instantâneo. Com suporte somente para publicações transacionais.
instantâneo do banco de dados Produz saída de programa de cópia em massa em modo nativo de todas as tabelas de um instantâneo do banco de dados. Os instantâneos de banco de dados não estão disponíveis em todas as edições do Microsoft SQL Server. Para obter uma lista de recursos com suporte nas edições do SQL Server, consulte Recursos com suporte nas edições do SQL Server 2016.
database snapshot character Produz saída de programa de cópia em massa em modo de caractere de todas as tabelas de um instantâneo de banco de dados. Os instantâneos de banco de dados não estão disponíveis em todas as edições do Microsoft SQL Server. Para obter uma lista de recursos com suporte nas edições do SQL Server, consulte Recursos com suporte nas edições do SQL Server 2016.
NULL (padrão) O padrão é nativo do Microsoft SQL Server Publishers. Para Editores não SQL Server, o padrão é caractere quando o valor de repl_freq é Instantâneo e concurrent_c para todos os outros casos.

[ @repl_freq = ] 'repl_freq' É o tipo de frequência de replicação, repl_freq é nvarchar(10) e pode ser um dos valores a seguir.

Valor Descrição
contínuo (padrão) O Publicador fornece saída de todas as transações com base em log. Para editores não SQL Server, isso requer que sync_method sejam definidos como concurrent_c.
instantâneo O Publicador só produz eventos de sincronização agendados. Para editores não SQL Server, isso requer que sync_method sejam definidos como caracteres.

[ @description = ] 'description' É uma descrição opcional para a publicação. description is nvarchar(255), with a default of NULL.

[ @status = ] 'status' Especifica se os dados de publicação estão disponíveis. o status é nvarchar(8) e pode ser um dos valores a seguir.

Valor Descrição
active O dados da publicação estão imediatamente disponíveis para os Assinantes.
inativo (padrão) Os dados da publicação não estão disponíveis aos Assinantes quando a publicação é criada pela primeira vez (eles podem assinar, mas as assinaturas não são processadas).

Não há suporte para o Oracle Publishers.

[ @independent_agent = ] 'independent_agent'Especifica se há um Agente de Distribuição autônomo para esta publicação. independent_agent é nvarchar(5), com um padrão de FALSE. Se for verdade, há uma Agente de Distribuição autônoma para esta publicação. Se for falsa, a publicação usará um Agente de Distribuição compartilhado e cada par de banco de dados do Publicador/Assinante tem um agente compartilhado único.

[ @immediate_sync = ] 'immediate_synchronization'Especifica se os arquivos de sincronização da publicação são criados sempre que o Agente de Instantâneo é executado. immediate_synchronization é nvarchar(5), com um padrão de FALSE. Se for verdadeiro, os arquivos de sincronização serão criados ou recriados sempre que o Agente de Instantâneo for executado. Assinantes podem obter arquivos de sincronização imediatamente se o Snapshot Agent for concluído antes da assinatura ser criada. Novas assinaturas obtêm os arquivos de sincronização mais novos gerados pela execução mais recente do Agente de Instantâneo. independent_agent deve ser verdadeiro para que immediate_synchronization seja verdade. Se for falso, os arquivos de sincronização serão criados somente se houver novas assinaturas. Você deve chamar sp_addsubscription para cada assinatura quando adicionar incrementalmente um novo artigo a uma publicação existente. Assinantes não podem receber arquivos de sincronização após a assinatura até que os Snapshot Agents sejam iniciados e concluídos.

[ @enabled_for_internet = ] 'enabled_for_internet' Especifica se a publicação está habilitada para a Internet e determina se o ftp (protocolo de transferência de arquivo) pode ser usado para transferir os arquivos de instantâneo para um assinante. enabled_for_internet é nvarchar(5), com um padrão de FALSE. Se for verdadeiro, os arquivos de sincronização da publicação serão colocados no diretório C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp. O usuário deve criar o diretório Ftp.

[ @allow_push = ] 'allow_push' Especifica se assinaturas por push podem ser criadas para a publicação fornecida. allow_push é nvarchar(5), com um padrão de TRUE, que permite assinaturas push na publicação.

[ @allow_pull = ] 'allow_pull' Especifica se as assinaturas pull podem ser criadas para a publicação fornecida. allow_pull é nvarchar(5), com um padrão de FALSE. Se for falso, assinaturas pull não serão permitidas na publicação.

[ @allow_anonymous = ] 'allow_anonymous' Especifica se assinaturas anônimas podem ser criadas para a publicação fornecida. allow_anonymous é nvarchar(5), com um padrão de FALSE. Se for verdadeiro, immediate_synchronization também deve ser definido como true. Se for falso, assinaturas anônimas não serão permitidas na publicação.

[ @allow_sync_tran = ] 'allow_sync_tran' Especifica se as assinaturas de atualização imediata são permitidas na publicação. allow_sync_tran é nvarchar(5), com um padrão de FALSE. truenão tem suporte para o Oracle Publishers.

[ @autogen_sync_procs = ] 'autogen_sync_procs' Especifica se o procedimento armazenado de sincronização para atualização de assinaturas é gerado no Publicador. autogen_sync_procs é nvarchar(5) e pode ser um dos seguintes valores.

Valor Descrição
true Definido automaticamente quando assinaturas de atualização estão habilitadas.
false Definido automaticamente quando assinaturas de atualização não estão habilitadas ou para Publicadores Oracle.
NULL (padrão) O padrão é verdadeiro quando a atualização de assinaturas é habilitada e falsa quando a atualização de assinaturas não está habilitada.

Observação

O valor fornecido pelo usuário para autogen_sync_procsserá substituído dependendo dos valores especificados para allow_queued_tran e allow_sync_tran.

[ @retention = ] retention É o período de retenção em horas para a atividade de assinatura. retenção é int, com um padrão de 336 horas. Se uma assinatura não estiver ativa dentro do período de retenção, expirará e será removida. O valor pode ser maior que o período de retenção de máximo do banco de dados de distribuição usado pelo Publicador. Se 0, as assinaturas conhecidas da publicação nunca expirarão e serão removidas pelo Agente de Limpeza de Assinatura Expirada.

[ @allow_queued_tran = ] 'allow_queued_updating' Habilita ou desabilita a enfileiramento de alterações no Assinante até que elas possam ser aplicadas no Publicador. allow_queued_updating é nvarchar(5) com um padrão de FALSE. Se for falso, as alterações no Assinante não serão enfileiradas. truenão tem suporte para o Oracle Publishers.

[ @snapshot_in_defaultfolder = ] 'snapshot_in_default_folder' Especifica se os arquivos de instantâneo são armazenados na pasta padrão. snapshot_in_default_folder é nvarchar(5) com um padrão de TRUE. Se verdadeiro, os arquivos de instantâneo podem ser encontrados na pasta padrão. Se for falso, os arquivos de instantâneo serão armazenados no local alternativo especificado pelo alternate_snapshot_folder. Locais alternativos podem ficar em outro servidor, em uma unidade de rede, ou uma mídia removível (como um CD-ROM ou disco removível). Você também pode salvar os arquivos de instantâneo em um site de FTP para ser recuperado pelo Assinante posteriormente Observe que esse parâmetro pode ser verdadeiro e ainda ter um local no parâmetro @alt_snapshot_folder . Essa combinação especifica que os arquivos de instantâneo serão armazenados nos locais padrão e alternativos.

[ @alt_snapshot_folder = ] 'alternate_snapshot_folder' Especifica o local da pasta alternativa para o instantâneo. alternate_snapshot_folder é nvarchar(255) com um padrão de NULL.

[ @pre_snapshot_script = ] 'pre_snapshot_script' Especifica um ponteiro para um local de arquivo .sql . pre_snapshot_script é nvarchar(255), com um padrão de NULL. O Agente de Distribuição executará o script pré-instantâneo antes de executar qualquer script de objeto replicado, ao aplicar um instantâneo no Assinante. O script é executado no contexto de segurança usado pelo Distribution Agente na conexão com o banco de dados de assinatura.

[ @post_snapshot_script = ] 'post_snapshot_script' Especifica um ponteiro para um local de arquivo .sql . post_snapshot_script é nvarchar(255), com um padrão de NULL. O Agente de Distribuição executará o script pós-instantâneo depois que todos os outros scripts de objeto replicado tentam sido aplicados durante uma sincronização inicial. O script é executado no contexto de segurança usado pelo Distribution Agente na conexão com o banco de dados de assinatura.

[ @compress_snapshot = ] 'compress_snapshot' Especifica que o instantâneo gravado no local @alt_snapshot_folder deve ser compactado no formato CAB da Microsoft. compress_snapshot é nvarchar(5), com um padrão de FALSE. false especifica que o instantâneo não será compactado; true especifica que o instantâneo será compactado. Arquivos de instantâneo maiores de 2 gigabytes (GB) não podem ser compactados. Arquivos de instantâneo compactados são descompactados no local onde o Distribution Agent é executado; assinaturas pull são geralmente usadas com instantâneos compactados para que os arquivos sejam descompactados no Assinante. O instantâneo na pasta padrão não pode ser compactado.

[ @ftp_address = ] 'ftp_address' É o endereço de rede do serviço FTP para o Distribuidor. ftp_address é sysname, com um padrão de NULL. Especifica onde os arquivos de instantâneo de publicação ficam localizados para serem captados pelo Agente de Distribuição ou por um Assinante. Como essa propriedade é armazenada para cada publicação, cada publicação pode ter uma ftp_address diferente. A publicação deve oferecer suporte à propagação de instantâneos por meio de FTP.

[ @ftp_port = ] ftp_port É o número da porta do serviço FTP para o Distribuidor. ftp_port é int, com um padrão de 21. Especifica onde os arquivos de instantâneo de publicação ficam localizados para serem captados pelo Distribution Agent ou por um Assinante. Como essa propriedade é armazenada para cada publicação, cada publicação pode ter sua própria ftp_port.

[ @ftp_subdirectory = ] 'ftp_subdirectory'Especifica onde os arquivos de instantâneo estarão disponíveis para o Agente de Distribuição ou Agente de Mesclagem do assinante a serem pegos se a publicação der suporte à propagação de instantâneos usando FTP. ftp_subdirectory é nvarchar(255), com um padrão de NULL. Como essa propriedade é armazenada para cada publicação, cada publicação pode ter seu próprio ftp_subdirctory ou optar por não ter nenhum subdiretório, indicado com um valor NULL.

[ @ftp_login = ] 'ftp_login' É o nome de usuário usado para se conectar ao serviço FTP. ftp_login é sysname, com um padrão de ANONYMOUS.

[ @ftp_password = ] 'ftp_password' É a senha do usuário usada para se conectar ao serviço FTP. ftp_password é sysname, com um padrão de NULL.

[ @allow_dts = ] 'allow_dts' Especifica que a publicação permite transformações de dados. Você pode especificar um pacote DTS ao criar uma assinatura. allow_transformable_subscriptions é nvarchar(5) com um padrão de FALSE, que não permite transformações DTS. Quando allow_dts for verdadeiro, sync_method deve ser definido como caractere ou concurrent_c.

true não tem suporte para o Oracle Publishers.

[ @allow_subscription_copy = ] 'allow_subscription_copy' Habilita ou desabilita a capacidade de copiar os bancos de dados de assinatura que assinam esta publicação. allow_subscription_copy énvarchar(5), com um padrão de FALSE.

[ @conflict_policy = ] 'conflict_policy' Especifica a política de resolução de conflitos seguida quando a opção de assinante de atualização enfileirada é usada. conflict_policy é nvarchar(100) com um padrão de NULL e pode ser um dos valores a seguir.

Valor Descrição
pub wins O Publicador vence o conflito.
sub reinit Reinicialize a assinatura.
sub wins O Assinante vence o conflito.
NULL (padrão) Se NULL e a publicação for uma publicação de instantâneo, a política padrão se tornará sub-reinit. Se NULL e a publicação não forem uma publicação de instantâneo, o padrão se tornará um pub vencedor.

Não há suporte para o Oracle Publishers.

[ @centralized_conflicts = ] 'centralized_conflicts' Especifica se os registros de conflito são armazenados no Publicador. centralized_conflicts é nvarchar(5), com um padrão de TRUE. Se for verdadeiro, os registros de conflito serão armazenados no Publicador. Se for falso, os registros de conflito serão armazenados no publicador e no assinante que causou o conflito. Não há suporte para o Oracle Publishers.

[ @conflict_retention = ] conflict_retention Especifica o período de retenção de conflitos, em dias. Esse é o período de tempo em que os metadados de conflito são armazenados para replicação transacional ponto a ponto e assinaturas de atualização enfileiradas. conflict_retention é int, com um padrão de 14. Não há suporte para o Oracle Publishers.

[ @queue_type = ] 'queue_type' Especifica qual tipo de fila é usado. queue_type é nvarchar(10), com um padrão de NULL e pode ser um desses valores.

Valor Descrição
sql Use SQL Server para armazenar transações.
NULL (padrão) O padrão é sql, que especifica usar SQL Server para armazenar transações.

Observação

O suporte para usar a Enfileiramento de Mensagens da Microsoft foi descontinuado. Especificar um valor de msmq resultará em um aviso e a replicação definirá automaticamente o valor como sql.

Não há suporte para o Oracle Publishers.

[ @add_to_active_directory = ] 'add\to_active_directory' Esse parâmetro foi preterido e só tem suporte para a compatibilidade com versões anteriores de scripts. Você não pode mais adicionar informações de publicação ao Microsoft Active Directory.

[ @logreader_job_name = ] 'logreader_agent_name' É o nome de um trabalho de agente existente. logreader_agent_name é sysname, com um valor padrão de NULL. Esse parâmetro só é especificado quando o Log Reader Agent usa um trabalho existente em vez de um novo trabalho que está sendo criado.

[ @qreader_job_name = ] 'queue_reader_agent_name' É o nome de um trabalho de agente existente. queue_reader_agent_name é sysname, com um valor padrão de NULL. Esse parâmetro só é especificado quando o Queue Reader Agent usa um trabalho existente em vez de um novo trabalho que está sendo criado.

[ @publisher = ] 'publisher'Especifica um editor não SQL Server. publisher é sysname, com um padrão de NULL.

Observação

O publicador não deve ser usado ao adicionar uma publicação a um SQL Server Publisher.

[ @allow_initialize_from_backup = ] 'allow_initialize_from_backup' Indica se os Assinantes podem inicializar uma assinatura para esta publicação de um backup em vez de um instantâneo inicial. allow_initialize_from_backup é nvarchar(5) e pode ser um destes valores:

Valor Descrição
true Habilita inicialização de um backup.
false Desabilita inicialização de um backup.
NULL (padrão) O padrão é verdadeiro para uma publicação em uma topologia de replicação ponto a ponto e false para todas as outras publicações.

Para obter mais informações, consulte Initialize a Transactional Subscription Without a Snapshot.

Aviso

Para evitar perder dados do assinante, ao usar sp_addpublication com @allow_initialize_from_backup = N'true', sempre use @immediate_sync = N'true'.

[ @replicate_ddl = ] replicate_ddl Indica se há suporte para replicação de esquema para a publicação. replicate_ddl é int, com um padrão de 1 para SQL Server Publishers e 0 para Editores não SQL Server. 1 indica que as instruções DDL (linguagem de definição de dados) executadas no publicador são replicadas e 0 indica que as instruções DDL não são replicadas. Replicação de esquema não tem suporte para Publicadores Oracle. Para obter mais informações, consulte Make Schema Changes on Publication Databases (Fazer alterações de esquema em bancos de dados de publicação).

O parâmetro @replicate_ddl é honrado quando uma instrução DDL adiciona uma coluna. O parâmetro @replicate_ddl é ignorado quando uma instrução DDL altera ou descarta uma coluna pelos seguintes motivos.

  • Quando uma coluna é removida, sysarticlecolumns deve ser atualizado para impedir que novas instruções DML incluam a coluna removida que causaria falha no agente de distribuição. O parâmetro @replicate_ddl é ignorado porque a replicação deve sempre replicar a alteração do esquema.

  • Quando uma coluna é alterada, o tipo de dados de origem ou nulidade podem ter sido alterados, fazendo as instruções DML conterem um valor que pode não ser compatível com a tabela no assinante. Estas instruções DML podem causar falha no agente de distribuição. O parâmetro @replicate_ddl é ignorado porque a replicação deve sempre replicar a alteração do esquema.

  • Quando uma instrução DDL adiciona uma nova coluna, sysarticlecolumns não inclui a nova coluna. Instruções DML não tentarão replicar dados para a nova coluna. O parâmetro é honrado porque replicar ou não replicar o DDL são aceitáveis.

[ @enabled_for_p2p = ] 'enabled_for_p2p' Permite que a publicação seja usada em uma topologia de replicação ponto a ponto. enabled_for_p2p é nvarchar(5), com um padrão de FALSE. true indica que a publicação dá suporte à replicação ponto a ponto. Ao definir enabled_for_p2pcomo true, as seguintes restrições se aplicam:

  • allow_anonymous deve ser falso.

  • allow_dts deve ser falso.

  • allow_initialize_from_backup deve ser verdade.

  • allow_queued_tran deve ser falso.

  • allow_sync_tran deve ser falso.

  • conflict_policy deve ser falso.

  • independent_agent deve ser verdade.

  • repl_freq deve ser contínua.

  • replicate_ddl deve ser 1.

Para obter mais informações, consulte Peer-to-Peer Transactional Replication.

[ @publish_local_changes_only = ] 'publish_local_changes_only'

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

[ @enabled_for_het_sub = ] 'enabled_for_het_sub'Permite que a publicação dê suporte a Assinantes não SQL Server. enabled_for_het_sub é nvarchar(5) com um valor padrão de FALSE. Um valor verdadeiro significa que a publicação dá suporte a Assinantes não SQL Server. Quando enabled_for_het_sub for verdadeiro, as seguintes restrições se aplicam:

  • allow_initialize_from_backup deve ser falso.

  • allow_push deve ser verdade.

  • allow_queued_tran deve ser falso.

  • allow_subscription_copy deve ser falso.

  • allow_sync_tran deve ser falso.

  • autogen_sync_procs deve ser falso.

  • conflict_policy deve ser NULL.

  • enabled_for_internet deve ser falso.

  • enabled_for_p2p deve ser falso.

  • ftp_address deve ser NULL.

  • ftp_subdirectory deve ser NULL.

  • ftp_password deve ser NULL.

  • pre_snapshot_script deve ser NULL.

  • post_snapshot_script deve ser NULL.

  • replicate_ddl deve ser 0.

  • qreader_job_name deve ser NULL.

  • queue_type deve ser NULL.

  • sync_method não pode ser nativo ou simultâneo.

Para obter mais informações, consulte Non-SQL Server Subscribers.

[ @p2p_conflictdetection = ] 'p2p_conflictdetection'Permite que o Agente de Distribuição detecte conflitos se a publicação estiver habilitada para replicação ponto a ponto. p2p_conflictdetection é nvarchar(5) com um valor padrão de TRUE. Para obter mais informações, consulte Conflict Detection in Peer-to-Peer Replication.

[ @p2p_originator_id = ] p2p_originator_id Especifica uma ID para um nó em uma topologia ponto a ponto. p2p_originator_id é int, com um padrão de NULL. Essa ID será usada para detecção de conflitos se p2p_conflictdetection estiver definida como TRUE. Especifica uma ID positiva, diferente de zero, que nunca foi usada na topologia. Para obter uma lista de IDs que já foram usadas, execute sp_help_peerconflictdetection.

[ @p2p_continue_onconflict = ] 'p2p_continue_onconflict'Determina se o Agente de Distribuição continua processando alterações após a detecção de um conflito. p2p_continue_onconflict é nvarchar(5) com um valor padrão de FALSE.

Cuidado

Recomendamos que você use o valor padrão de FALSE. Quando essa opção é definida como TRUE, o Distribution Agent tenta convergir os dados na topologia aplicando a linha conflitante do nó que tem a ID de origem mais alta. Esse método não garante convergência. Verifique se a topologia está consistente depois que um conflito é detectado. Para obter mais informações, consulte “Controlando conflitos” em Conflict Detection in Peer-to-Peer Replication.

[ @allow_partition_switch = ] 'allow_partition_switch' Especifica se ALTER TABLE... As instruções SWITCH podem ser executadas no banco de dados publicado. allow_partition_switch é nvarchar(5) com um valor padrão de FALSE. Para obter mais informações, consulte Replicar tabelas e índices particionados.

[ \@replicate_partition_switch = ] 'replicate_partition_switch' Especifica se ALTER TABLE... As instruções SWITCH executadas no banco de dados publicado devem ser replicadas para Assinantes. replicate_partition_switch é nvarchar(5) com um valor padrão de FALSE. Essa opção só será válida se allow_partition_switch estiver definida como TRUE.

[ \@p2p_conflictdetection_policy = ] 'originatorid' | 'lastwriter'Introduzido no SQL Server CU13 de 2019.

  • originatorid (Padrão) O agente de distribuição detecta o conflito e decide o vencedor com base na ID do criador, se p2p_continue_onconflict = 'true'. Caso contrário, ela gerará um erro.

  • lastwriter O agente de distribuição detecta o conflito e decide o vencedor com base no datetime do último gravador se p2p_continue_onconflict = 'true'. Caso contrário, ela gerará um erro.

    Observação

    Quando você especifica, originatorida detecção de conflitos é a mesma que era antes SQL Server CU 13 de 2019. Quando você especifica lastwriter SQL Server pode permitir que conflitos sejam resolvidos automaticamente com base na gravação mais recente.

Valores do código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_addpublication é usado na replicação de instantâneo e replicação transacional.

Se existirem várias publicações que publicam o mesmo objeto de banco de dados, somente publicações com um valor replicate_ddlde 1 replicarão as instruções ALTER TABLE, ALTER VIEW, ALTER PROCEDURE, ALTER FUNCTION e ALTER TRIGGER DDL. No entanto, uma instrução ALTER TABLE DROP COLUMN DDL será replicada por todas as publicações que estão publicando a coluna cancelada.

Com a replicação DDL habilitada (replicate_ddl = 1) para uma publicação, a fim de fazer alterações DDL não replicadas na publicação, sp_changepublication deve primeiro ser executado para definir replicate_ddl como 0. Depois que as instruções DDL não replicantes tiverem sido emitidas, sp_changepublication poderão ser executadas novamente para ativar a replicação DDL novamente.

Exemplo

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. 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 @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- This should be passed at runtime.
SET @password = $(Password); 

-- Enable transactional or snapshot replication on the publication database.
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Create a new transactional publication with the required properties. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_push = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;
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_addpublication. Os logons de autenticação do Windows devem ter uma conta de usuário no banco de dados que representa a conta de usuário do Windows. Uma conta de usuário que representa um grupo do Windows não é suficiente.

Consulte Também

sp_addlogreader_agent (Transact-SQL)
sp_addpublication_snapshot (Transact-SQL)
sp_changepublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
sp_replicationdboption (Transact-SQL)
Publicar dados e objetos de banco de dados
Procedimentos armazenados de replicação (Transact-SQL)