sp_changepublication (Transact-SQL)

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

Altera as propriedades de uma publicação. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_changepublication [ [ @publication = ] 'publication' ]  
    [ , [ @property = ] 'property' ]  
    [ , [ @value = ] 'value' ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  
    [ , [ @publisher = ] 'publisher' ]

Argumentos

[ @publication = ] 'publication' É o nome da publicação. publication é sysname, com um padrão de NULL.

[ @property = ] 'property' É a propriedade de publicação a ser alterada. A propriedade é Nvarchar(255).

[ @value = ] 'value' É o novo valor da propriedade. value é nvarchar(255), com um padrão de NULL.

Essa tabela descreve as propriedades da publicação que podem ser alteradas e restrições nos valores dessas propriedades.

Propriedade Valor Descrição
allow_anonymous true Assinaturas anônimas podem ser criadas para a determinada publicação, e immediate_sync também deve ser verdadeira. Não pode ser alterado para publicações ponto a ponto.
false Não podem ser criadas assinaturas anônimas para a publicação determinada. Não pode ser alterado para publicações ponto a ponto.
allow_initialize_from_backup true Os Assinantes podem iniciar uma assinatura para essa publicação de um backup em vez de um instantâneo inicial. Essa propriedade não pode ser alterada para publicações que não sejam do Microsoft SQL Server.
false Assinantes devem usar o instantâneo inicial. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
allow_partition_switch true TABELA ALTER... As instruções SWITCH podem ser executadas no banco de dados publicado. Para obter mais informações, consulte Replicar tabelas e índices particionados.
false TABELA ALTER... As instruções SWITCH não podem ser executadas no banco de dados publicado.
allow_pull true São permitidas assinaturas pull para a publicação determinada. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
false Não são permitidas assinaturas pull para a publicação determinada. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
allow_push true São permitidas assinaturas push para a publicação determinada.
false Não são permitidas assinaturas push para a publicação determinada.
allow_subscription_copy true Habilita a capacidade de copiar bancos de dados que assinam esta publicação. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
false Desabilita a capacidade de copiar bancos de dados que assinam esta publicação. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
alt_snapshot_folder Local da pasta alternativa para o instantâneo.
centralized_conflicts true Registros de conflito são armazenados no Publicador. Só poderá ser alterado se não houver nenhuma assinatura ativa. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
false Registros de conflito são armazenados no Publicador e no Assinante que causou o conflito. Só poderá ser alterado se não houver nenhuma assinatura ativa. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
compress_snapshot true Instantâneo em uma pasta de instantâneo alternativa é compactado no formato de arquivo .cab. O instantâneo na pasta de instantâneo padrão não pode ser compactado.
false O instantâneo não é compactado, o que é o comportamento padrão para replicação.
conflict_policy Pub vence Política de resolução de conflito para atualizar Assinantes em que o Publicador vence o conflito. Essa propriedade só poderá ser alterada se não houver assinaturas ativas. Sem suporte para Publicadores Oracle.
sub reinit Na atualização de Assinantes, se ocorrer um conflito a assinatura deverá ser reiniciada. Essa propriedade só poderá ser alterada se não houver assinaturas ativas. Sem suporte para Publicadores Oracle.
sub vence Política de resolução de conflito para atualização de Assinantes onde o Assinante vence o conflito. Essa propriedade só poderá ser alterada se não houver assinaturas ativas. Sem suporte para Publicadores Oracle.
conflict_retention int que especifica o período de retenção de conflito, em dias. A retenção padrão é 14 dias. 0 significa que nenhuma limpeza de conflito é necessária. Sem suporte para Publicadores Oracle.
descrição Entrada opcional que descreve a publicação.
enabled_for_het_sub true Permite que a publicação ofereça suporte a Assinantes que não sejam do SQL Server. enabled_for_het_sub não pode ser alterada quando há assinaturas para a publicação. Talvez seja necessário executar procedimentos armazenados de replicação (Transact-SQL) para cumprir os seguintes requisitos antes de definir enabled_for_het_sub como true:
- allow_queued_tran deve ser falso.
- allow_sync_tran deve ser falso.
Alterar enabled_for_het_sub para true pode alterar as configurações de publicação existentes. Para obter mais informações, consulte Non-SQL Server Subscribers. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
false A publicação não oferece suporte a assinantes que não sejam do SQL Server. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
enabled_for_internet true A publicação é habilitada para a Internet, e o FTP (File Transfer Protocol) pode ser usado para transferir os arquivos de instantâneo a um assinante. Os arquivos de sincronização da publicação são colocados no seguinte diretório: C:\Arquivos de Programas\Microsoft SQL Server\MSSQL\Repldata\ftp. ftp_address não pode ser NULL. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
false A publicação não está habilitada para a Internet. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
enabled_for_p2p true A publicação oferece suporte a replicação ponto a ponto. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
Para definir enabled_for_p2p como true, aplicam-se as seguintes restrições:
- 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.
- enabled_for_het_sub deve ser falso.
- independent_agent deve ser verdade.
- repl_freq deve ser contínua.
- replicate_ddl deve ser 1.
false A publicação não oferece suporte a replicação ponto a ponto. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
ftp_address Local acessível de FTP dos arquivos de instantâneo de publicação. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
ftp_login Nome de usuário para conexão com o serviço de FTP e o valor ANONYMOUS são permitidos. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
ftp_password Senha para o nome de usuário usado na conexão com o serviço de FTP. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
ftp_port Número da porta do serviço FTP para Distribuidor. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
ftp_subdirectory Especifica onde os arquivos de instantâneo serão criados se a publicação oferecer suporte à propagação de instantâneos usando FTP. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
immediate_sync true Arquivos de sincronização para a publicação são criados ou recriados em cada execução do Snapshot Agent. Assinantes podem receber arquivos de sincronização imediatamente após a assinatura, se o Snapshot Agent foi concluído uma vez antes da assinatura. Novas assinaturas obtêm os arquivos de sincronização mais novos gerados pela execução mais recente do Agente de Instantâneo. independent_agent também deve ser verdade. Consulte os comentários abaixo para obter informações adicionais sobre immediate_sync.
false Arquivos de sincronização só serão criados se houver novas assinaturas. Assinantes não podem receber arquivos de sincronização após a assinatura até que o Snapshot Agent seja iniciado e concluído.
independent_agent true A publicação tem seu próprio Distribution Agent dedicado.
false A publicação usa um Distribution Agent compartilhado e cada par de banco de dados de publicação/assinatura tem um agente compartilhado.
p2p_continue_onconflict true O Distribution Agent continua processando alterações quando um conflito é detectado.
Cuidado: Recomendamos que você use o valor padrão de FALSE. Quando essa opção é definida como TRUE, o Agente de Distribuição tenta convergir 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.
false O Distribution Agent deixa de processar alterações quando um conflito é detectado.
post_snapshot_script Especifica o local de um arquivo de script Transact-SQL que o Agente de Distribuição executa depois que todos os outros scripts e dados de objeto replicado foram aplicados durante uma sincronização inicial.
pre_snapshot_script Especifica o local de um arquivo de script Transact-SQL que o Agente de Distribuição executa antes que todos os outros scripts e dados de objeto replicado tenham sido aplicados durante uma sincronização inicial.
publish_to_ActiveDirectory true Esse parâmetro foi preterido e tem suporte somente para a compatibilidade com versões anteriores de scripts. Você não pode mais adicionar informações de publicação ao Microsoft Active Directory.
false Remove as informações de publicação do Active Directory.
queue_type sql Use o SQL Server para armazenar transações. Essa propriedade só poderá ser alterada se não houver assinaturas ativas.

Observação: o suporte para usar o serviço de enfileiramento de mensagens da Microsoft foi descontinuado. Especificar um valor de msmq para valor resulta em um erro.
redirected_publisher O nome do ouvinte do grupo de disponibilidade. Usado na replicação ponto a ponto quando um par está em um grupo de disponibilidade. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server. Introduzido no SQL Server 2019 (15.x) 13. Para obter informações adicionais, consulte Configurar um par como parte do grupo de disponibilidade ou Configurar ambos os pares em grupos de disponibilidade.
repl_freq contínuo Publica saída de todas as transações com base em log.
instantâneo Publica somente eventos de sincronização agendados.
replicate_ddl 1 Instruções DDL (linguagem de definição de dados) executadas no Publicador são replicadas. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server.
0 Instruções DDL não são replicadas. Essa propriedade não pode ser alterada para publicações que não sejam do SQL Server. A replicação de alterações de esquema não pode ser desabilitada ao usar replicação ponto a ponto.
replicate_partition_switch true TABELA ALTER... As instruções SWITCH executadas no banco de dados publicado devem ser replicadas para Assinantes. Essa opção será válida somente se allow_partition_switch estiver definida como TRUE. Para obter mais informações, consulte Replicar tabelas e índices particionados.
false TABELA ALTER... As instruções SWITCH não devem ser replicadas para assinantes.
retenção int que representa o período de retenção, em horas, para a atividade de assinatura. Se uma assinatura não estiver ativa dentro do período de retenção, será removida.
snapshot_in_defaultfolder true Arquivos de instantâneo são armazenados na pasta de instantâneos padrão. Se alt_snapshot_foldertambém for especificado, os arquivos de instantâneo serão armazenados nos locais padrão e alternativo.
false Os arquivos de instantâneo são armazenados no local alternativo especificado por alt_snapshot_folder.
status active Dados de Publicação estão imediatamente disponíveis para os Assinantes quando a publicação é criada. Sem suporte para Publicadores Oracle.
inactive Dados de Publicação não estão disponíveis para os Assinantes quando a publicação é criada. Sem suporte para Publicadores Oracle.
sync_method native Usa saída de cópia em massa do modo nativo de todas as tabelas ao sincronizar assinaturas.
character Usa saída de cópia em massa do modo de caractere de todas as tabelas ao sincronizar assinaturas.
simultâneo Usa saída de programa de cópia em massa do modo nativo de todas as tabelas, mas não bloqueia as tabelas durante o processo de geração de instantâneo. Não válido para replicação de instantâneo.
concurrent_c Usa saída de programa de cópia em massa do modo de caractere de todas as tabelas, mas não bloqueia as tabelas durante o processo de geração de instantâneo. Não válido para replicação de instantâneo.
ID da tarefa Essa propriedade foi preterida e não tem mais suporte.
allow_drop true Habilita o DROP TABLE suporte a DLL para artigos que fazem parte da replicação transacional. Versão mínima com suporte: SQL Server 2014 (12.x) Service Pack 2 ou superior e SQL Server 2016 (13.x) Service Pack 1 ou superior. Referência adicional: KB 3170123
false Desabilita o DROP TABLE suporte a DLL para artigos que fazem parte da replicação transacional. Esse é o valor padrão para essa propriedade.
NULL (padrão) Retorna a lista de valores com suporte para a propriedade.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot Reconhece que a ação executada por este procedimento armazenado pode invalidar um instantâneo existente. force_invalidate_snapshot é um pouco, com um padrão de 0.

  • 0 especifica que as alterações no artigo não fazem com que o instantâneo seja inválido. Se o procedimento armazenado detectar que a alteração requer um novo instantâneo, ocorrerá um erro e nenhuma alteração será feita.
  • 1 especifica que as alterações no artigo podem fazer com que o instantâneo seja inválido. Se houver assinaturas existentes que exigem um novo instantâneo, esse valor dará permissão para que o instantâneo existente seja marcado como obsoleto e um novo instantâneo seja gerado.
    Consulte a seção Comentários das propriedades que, quando alteradas, requerem a geração de um novo instantâneo.

[@force_reinit_subscription = ] force_reinit_subscription
Confirma que a ação tomada por esse procedimento armazenado pode exigir que as assinaturas existentes sejam reinicializadas. force_reinit_subscription é um pouco com um padrão de 0.

  • 0 especifica que as alterações no artigo não fazem com que a assinatura seja reinicializada. Se o procedimento armazenado detectar que a alteração irá requerer assinaturas existentes para ser reiniciada, ocorrerá um erro e nenhuma alteração será feita.
  • 1 especifica que as alterações no artigo fazem com que a assinatura existente seja reinicializada e dá permissão para que a reinicialização da assinatura ocorra.

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

Observação

publisher não deve ser usado ao alterar propriedades de artigo em um SQL Server Publisher.

Valores do código de retorno

0 (sucesso) ou 1 (fracasso)

Comentários

sp_changepublication é usado na replicação de snapshot e na replicação transacional.

Depois de alterar qualquer uma das propriedades a seguir, você deve gerar um novo instantâneo e especificar um valor de 1 para o parâmetro force_invalidate_snapshot.

  • alt_snapshot_folder
  • compress_snapshot
  • enabled_for_het_sub
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode

Para listar objetos de publicação no Active Directory usando o parâmetro publish_to_active_directory, o objeto do SQL Server já deve ser criado no Active Directory.

Impacto da sincronização imediata

Quando a sincronização imediata está ativada, todas as alterações no log são controladas imediatamente após a geração do snapshot inicial, mesmo que não haja assinaturas. As alterações registradas são usadas quando um cliente está usando o backup para adicionar um novo nó de mesmo nível. Depois que o backup é restaurado, o peer é sincronizado com quaisquer outras alterações que ocorram após a realização do backup. Como os comandos são controlados no banco de dados de distribuição, a lógica de sincronização pode examinar o último LSN de backup e usá-lo como ponto de partida, sabendo que o comando está disponível se o backup foi feito dentro do período máximo de retenção. (O valor padrão para o período de retenção mínimo é 0 horas e o período de retenção máximo é 24 horas.)

Quando a sincronização imediata está desativada, as alterações são mantidas pelo menos o período de retenção mínimo e limpas imediatamente para todas as transações que já foram replicadas. Se a sincronização imediata for desativada e estiver configurada com o período de retenção padrão, provavelmente as alterações necessárias após a realização do backup foram limpas, e novo nó par não será inicializado corretamente. A única opção restante é a confirmação da topologia. A ativação da sincronização imediata oferece maior flexibilidade e é a configuração recomendada para a replicação P2P.

Exemplo

DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran' 

-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2022]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
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_changepublication.

Confira também

Exibir e modificar as propriedades da publicação
Alterar propriedades da publicação e do artigo
sp_addpublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
Procedimentos armazenados de replicação (Transact-SQL)