sp_addpublication (Transact-SQL)

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

Ícone de vínculo de tópicoConvenções de sintaxe 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'

Argumentos

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

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

  • [ @restricted=] 'restricted'
    Com suporte somente 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. Sem suporte para Publicadores Oracle.

    character

    Produz saída de programa de cópia em massa em modo de caractere de todas as tabelas. Para um Publicador Oracle, character só é válido em replicação de instantâneo.

    concurrent

    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. Sem suporte para Publicadores Oracle.

    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. Esta opção requer o SQL Server Enterprise.

    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. Esta opção requer o SQL Server Enterprise.

    NULL (padrão)

    Assume native como padrão para Editores Microsoft SQL Server. Para Publicadores não SQL Server, assume character como padrão quando o valor de repl_freq é Snapshot 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

    continuous (padrão)

    O Publicador fornece saída de todas as transações com base em log. Para Publicadores não SQL Server, isto requer que sync_method seja definido como concurrent_c.

    snapshot

    O Publicador só produz eventos de sincronização agendados. Para Publicadores não SQL Server, isto requer que sync_method seja definido como character.

  • [ @description=] 'description'
    É uma descrição opcional para a publicação. description é nvarchar(255), com um padrão de NULL.

  • [ @status=] 'status'
    Especifica se os dados da publicação estão disponíveis. 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.

    inactive (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).

    Sem suporte para Publicadores Oracle.

  • [ @independent_agent=] 'independent_agent'
    Especifica se há um Distribution Agent autônomo para essa publicação. independent_agent é nvarchar(5), com um padrão de FALSE. Se for true, haverá um Distribution Agent autônomo para essa publicação. Se for false, a publicação usará um Distribution Agent compartilhado e cada par de banco de dados Publicador/Assinante terá um agente compartilhado, único.

  • [ @immediate_sync=] 'immediate_synchronization'
    Especifica se os arquivos de sincronização para a publicação serão criados em cada execução do Snapshot Agent. immediate_synchronization é nvarchar(5), com um padrão de FALSE. Se for true, os arquivos de sincronização serão criados ou recriados em cada execução do Snapshot Agent. Assinantes podem obter arquivos de sincronização imediatamente se o Agente de Instantâneo 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 Snapshot Agent. independent_agent deve ser true para que immediate_synchronization seja true. Se for false, os arquivos de sincronização só serão criados se houver novas assinaturas . Você deve chamar sp_addsubscription para cada assinatura quando você adicionar, de forma crescente, 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 Internet e determina se FTP (File Transfer Protocol) pode ser usado para transferir os arquivos de instantâneo para um assinante. enabled_for_internet é nvarchar(5), com um padrão FALSE. Se for true, os arquivos de sincronização para a 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 push podem ser criadas para a determinada publicação. 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 determinada. allow_pull é nvarchar(5), com um padrão FALSE. Se for false, não serão permitidas assinaturas pull na publicação.

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

  • [ @allow_sync_tran=] 'allow_sync_tran'
    Especifica se assinaturas de atualização imediata serão permitidas na publicação. allow_sync_tran é nvarchar(5), com um padrão de FALSE. true é Sem suporte para Publicadores Oracle.

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

    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 Editores Oracle.

    NULL (padrão)

    Assume true como padrão quando assinaturas de atualização estão habilitadas e false quando assinaturas de atualização não estão habilitadas.

    ObservaçãoObservação

    O valor fornecido de usuário para autogen_sync_procs será 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 atividade de assinatura. retention é 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 for 0, assinaturas conhecidas na publicação nunca irão expirar e serão removidas pelo Agente de Limpeza de Assinatura Expirada.

  • [ @allow_queued_tran= ] 'allow_queued_updating'
    Habilita ou desabilita o serviço de enfileiramento de mensagens no Assinante até que possam ser aplicadas no Publicador. allow_queued_updating é nvarchar(5) com um padrão de FALSE. Se for false, as alterações no Assinante não serão enfileiradas. true é Sem suporte para Publicadores Oracle.

  • [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder'
    Especifica se os arquivos de instantâneo serão armazenados na pasta padrão. snapshot_in_default_folder é nvarchar(5), com um padrão de TRUE. Se for true, os arquivos de instantâneo poderão ser localizados na pasta padrão. Se for false, os arquivos de instantâneo foram armazenados no local alternativo especificado por 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 assim 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 alternativo.

  • [ @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 Distribution Agent 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 Distribution Agent 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 seja 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 Distribution Agent ou por um Assinante. Considerando que essa propriedade é armazenada para cada publicação, cada publicação pode ter um ftp_addressdiferente. A publicação deve oferecer suporte à propagação de instantâneos usando o FTP.

  • [ @ftp_port= ] ftp_port
    É o número de 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. Considerando que essa propriedade é armazenada para cada publicação, cada publicação pode ter seu próprio ftp_port.

  • [ @ftp_subdirectory = ] 'ftp_subdirectory'
    Especifica onde os arquivos de instantâneo estarão disponíveis para serem captados pelo Distribution Agent do Assinante se a publicação oferecer suporte à propagação de instantâneo usando o FTP. ftp_subdirectory é nvarchar(255), com um padrão de NULL. Já que essa propriedade é armazenada para cada publicação, cada publicação pode ter seu próprio ftp_subdirctory ou escolher não ter um subdiretório indicado com um valor de NULL.

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

  • [ @ftp_password = ] 'ftp_password'
    É a senha de usuário usada para conexão com o 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 é verdadeiro, sync_method deve ser definido como character ou concurrent_c.

    true é sem suporte para Publicadores Oracle.

  • [ @allow_subscription_copy = ] 'allow_subscription_copy'
    Habilita ou desabilita a capacidade de copiar os bancos de dados de assinatura que assinam essa 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 conflito seguida quando a opção de assinante de atualização enfileirado é 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 for NULL e a publicação for uma publicação de instantâneo, a política padrão será sub reinit. Se for NULL e a publicação não for uma publicação de instantâneo, o padrão será pub wins.

    Sem suporte para Publicadores Oracle.

  • [ @centralized_conflicts = ] 'centralized_conflicts'
    Especifica se registros de conflito serão armazenados no Publicador. centralized_conflicts é nvarchar(5), com um padrão de TRUE. Se for true, registros de conflito serão armazenados no Publicador. Se for false, registros de conflito serão armazenados no Publicador e no Assinante que causou o conflito. Sem suporte para Publicadores Oracle.

  • [ @conflict_retention = ] conflict_retention
    Especifica o período de retenção de conflito, 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 enfileirada. conflict_retention é int, com um padrão de 14. Sem suporte para Publicadores Oracle.

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

    Valor

    Descrição

    sql

    Use o SQL Server para armazenar transações.

    NULL (padrão)

    Assume sql como padrão, que especifica para usar SQL Server para armazenar transações.

    ObservaçãoObservação

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

    Sem suporte para Publicadores Oracle.

  • [ @add_to_active_directory = ] 'add_to_active_directory'
    Esse parâmetro foi preterido e tem suporte somente para compatibilidade com versões anteriores. Você já não pode 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 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 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 Publicador não SQL Server. publisher é sysname, com um padrão de NULL.

    ObservaçãoObservação

    publisher não deve ser usado ao adicionar uma publicação a um Publicador SQL Server.

  • [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup'
    Indica se os Assinantes podem iniciar uma assinatura para essa publicação de um backup em vez de um instantâneo inicial. allow_initialize_from_backup is 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)

    Assume true como padrão 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 Inicializando uma assinatura transacional sem um instantâneo.

  • [ @replicate_ddl = ] replicate_ddl
    Indica se replicação de esquema tem suporte para a publicação. replicate_ddl é int, com um padrão de 1 para Editores SQL Server e 0 para Publicadores não SQL Server. 1 indica que instruções DDL (linguagem de definição de dados) executadas no Publicador são replicadas e 0 indica que 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 Fazendo 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 remove uma coluna pelas razões seguintes.

    • 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 sempre tem que replicar a alteração de 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 sempre tem que replicar a alteração de 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 oferece suporte a replicação ponto a ponto. Ao definir enabled_for_p2p como true, as seguintes restrições se aplicam:

    • allow_anonymous deve ser false.

    • allow_dts deve ser false.

    • allow_initialize_from_backup deve ser true.

    • allow_queued_tran deve ser false.

    • allow_sync_tran deve ser false.

    • conflict_policy deve ser false.

    • independent_agent deve ser true.

    • repl_freq deve ser continuous.

    • replicate_ddl deve ser 1.

    Para obter mais informações, consulte Replicação de transacional ponto a ponto.

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

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

    • allow_initialize_from_backup deve ser false.

    • allow_push deve ser true.

    • allow_queued_tran deve ser false.

    • allow_subscription_copy deve ser false.

    • allow_sync_tran deve ser false.

    • autogen_sync_procs deve ser false.

    • conflict_policy deve ser NULL.

    • enabled_for_internet deve ser false.

    • enabled_for_p2p deve ser false.

    • 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 native ou concurrent.

    Para obter mais informações, consulte Assinantes não SQL Server.

  • [ @p2p_conflictdetection= ] 'p2p_conflictdetection'
    Habilita o Distribution Agent a detectar conflitos se a publicação for habilitada para replicação ponto a ponto. p2p_conflictdetection é nvarchar(5) com um padrão de TRUE. Para obter mais informações, consulte Detecção de conflitos na replicação ponto a ponto.

  • [ @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 conflito se p2p_conflictdetection for definido como TRUE. Especifica uma ID positiva, diferente de zero, que nunca foi usada na topologia. Para uma lista de ID que já foram usadas, execute sp_help_peerconflictdetection.

  • [ @p2p_continue_onconflict= ] 'p2p_continue_onconflict'
    Determina se o Distribution Agent deve continuar processando as alterações depois que um conflito é detectado. p2p_continue_onconflict é nvarchar(5) com um valor padrão de FALSE.

    Observação sobre cuidadosCuidado

    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 “Tratamento de conflitos” emDetecção de conflitos na replicação ponto a ponto.

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

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

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

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

Se houver várias publicações que publicam os mesmos objetos de banco de dados, somente publicações com um valor replicate_ddl de 1 irá replicar 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 descartada.

Com replicação DDL habilitada (replicate_ddl = 1) para uma publicação, para fazer alterações DDL de não replicação na publicação, sp_changepublication deve ser primeiro executado para definir replicate_ddl como 0. Depois que as instruções DDL de não replicação forem emitidas, sp_changepublication pode ser executado novamente para retroceder a replicação de DDL.

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'AdventureWorks2008R2'; 
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 podem executar sp_addpublication.