sys.sp_changepublication (Transact-SQL)

Aplica-se a: SQL ServerAzure SQL Managed Instance

Altera as propriedades de uma publicação. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.

Transact-SQL convenções de sintaxe

Syntax

sys.sp_changepublication
    [ [ @publication = ] N'publication' ]
    [ , [ @property = ] N'property' ]
    [ , [ @value = ] N'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

Arguments

[ @publication = ] N'publicação'

O nome da publicação. @publication é sysname, com um padrão de NULL.

@property [ = ] N'propriedade'

A propriedade de publicação deve mudar. @property é nvarchar(255), com um padrão de NULL.

@value [ = ] N'valor'

O novo valor da propriedade. @value é nvarchar(255), com um padrão de NULL.

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

Property Value Descrição
allow_anonymous true Podem ser criadas subscrições anónimas para a publicação em questão, e immediate_sync também devem ser true. Não pode ser alterado para publicações peer-to-peer.
false Não é possível criar subscrições anónimas para a publicação em questão. Não pode ser alterado para publicações peer-to-peer.
allow_initialize_from_backup true Os subscritores podem iniciar uma subscrição desta publicação a partir de uma cópia de segurança em vez de um instantâneo inicial. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
false Os subscritores devem usar o snapshot inicial. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
allow_partition_switch true ALTER TABLE...SWITCH As instruções podem ser executadas contra a base de dados publicada. Para mais informações, consulte Replicar Tabelas e Índices Particionados.
false ALTER TABLE...SWITCH As instruções não podem ser executadas contra a base de dados publicada.
allow_pull true São permitidas subscrições de pull para a publicação em questão. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
false Não são permitidas subscrições por pull para a publicação em questão. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
allow_push true São permitidas subscrições push para a publicação em questão.
false As subscrições push não são permitidas para a publicação em questão.
allow_subscription_copy true Permite copiar bases de dados que subscrevem esta publicação. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
false Desativa a capacidade de copiar bases de dados que subscrevem esta publicação. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
alt_snapshot_folder Localização da pasta alternativa para o snapshot.
centralized_conflicts true Os registos de conflito são armazenados no Publisher. Só pode ser alterado se não houver subscrições ativas. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
false Os registos de conflito são armazenados tanto no Publisher como no Assinante que causou o conflito. Só pode ser alterado se não houver subscrições ativas. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
compress_snapshot true O snapshot numa pasta alternativa de snapshot é comprimido no formato de ficheiro .cab. O snapshot na pasta de snapshots padrão não pode ser comprimido.
false O snapshot não é comprimido, que é o comportamento padrão para replicação.
conflict_policy pub wins Política de resolução de conflitos para atualizar Subscritores quando o Publisher vence o conflito. Esta propriedade só pode ser alterada se não existirem subscrições ativas. Não é suportado para a Oracle Publishers.
sub reinit Para atualizar os Subscritores, se ocorrer um conflito, a subscrição deve ser reinicializada. Esta propriedade só pode ser alterada se não existirem subscrições ativas. Não é suportado para a Oracle Publishers.
sub wins Política de resolução de conflitos para atualizar os Subscritores quando o Assinante vence o conflito. Esta propriedade só pode ser alterada se não existirem subscrições ativas. Não é suportado para a Oracle Publishers.
conflict_retention Um valor int que especifica o período de retenção do conflito, em dias. A retenção padrão é de 14 dias. 0 significa que não é necessária qualquer limpeza de conflitos. Não é suportado para a Oracle Publishers.
description Entrada opcional que descreve a publicação.
enabled_for_het_sub true Permite que a publicação suporte assinantes que não sejam do SQL Server. enabled_for_het_sub Não pode ser alterado quando há subscrições da publicação. Pode ser necessário executar sp_changepublication para cumprir os seguintes requisitos antes de definir enabled_for_het_sub para verdadeiro:
- allow_queued_tran deve ser false.
- allow_sync_tran deve ser false.
Mudar enabled_for_het_sub para true pode alterar as definições de publicação existentes. Para mais informações, consulte Assinantes Não-SQL do Servidor. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
false A Publication não suporta subscritores que não sejam do SQL Server. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
enabled_for_internet true A publicação está ativada para a Internet, e o Protocolo de Transferência de Ficheiros (FTP) pode ser usado para transferir os ficheiros snapshot para um assinante. Os ficheiros de sincronização para a publicação são colocados no seguinte diretório: C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp. ftp_address não pode ser NULL. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
false A publicação não está ativada para a Internet. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
enabled_for_p2p true A publicação suporta replicação peer-to-peer. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
Para definir enabled_for_p2p para true, aplicam-se as seguintes restrições:
- 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.
- enabled_for_het_sub deve ser false.
- independent_agent deve ser true.
- repl_freq deve ser continuous.
- replicate_ddl deve ser 1.
false A publicação não suporta replicação peer-to-peer. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
ftp_address Localização acessível FTP dos ficheiros snapshot da publicação. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
ftp_login Nome de utilizador usado para se ligar ao serviço FTP, e o valor anonymous é permitido. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
ftp_password Palavra-passe para o nome de utilizador usado para se ligar ao serviço FTP. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
ftp_port Número de porta do serviço FTP para o Distribuidor. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
ftp_subdirectory Especifica onde os ficheiros snapshot são criados se a publicação suportar a propagação de snapshots usando FTP. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
immediate_sync true Os ficheiros de sincronização para a publicação são criados ou recriados cada vez que o Snapshot Agent é executado. Os assinantes podem receber os ficheiros de sincronização imediatamente após a subscrição, se o Snapshot Agent for concluído uma vez antes da subscrição. As novas subscrições recebem os ficheiros de sincronização mais recentes gerados pela execução mais recente do Snapshot Agent. independent_agent também deve ser true. Para mais informações, veja Efeito da sincronização imediata.
false Os ficheiros de sincronização são criados apenas se houver novas subscrições. Os assinantes não podem receber os ficheiros de sincronização após a subscrição até que o Snapshot Agent seja iniciado e concluído.
independent_agent true A publicação tem o seu próprio Distribution Agent dedicado.
false A publicação utiliza um Distribution Agent partilhado, e cada par de base de dados publicação/subscrição tem um agente partilhado.
p2p_continue_onconflict true O Distribution Agent continua a processar alterações quando é detetado um conflito.

Atenção: Recomendamos que use o valor padrão de FALSE. Quando esta opção está definida para TRUE, o Agente de Distribuição tenta convergir dados na topologia aplicando a linha conflituosa do nó que é o ID originador mais alto. Este método não garante convergência. Deves garantir que a topologia é consistente após a deteção de um conflito. Para mais informações, veja "Gestão de Conflitos" em Peer-to-Peer - Deteção de Conflitos em Replicação Peer-to-Peer.
false O Distribution Agent para de processar alterações quando é detetado um conflito.
post_snapshot_script Especifica a localização de um ficheiro de script Transact-SQL que o Distribution Agent executa após todos os outros scripts e dados de objetos replicados serem aplicados durante uma sincronização inicial.
pre_snapshot_script Especifica a localização de um ficheiro de script Transact-SQL que o Distribution Agent executa antes de todos os outros scripts e dados de objetos replicados serem aplicados durante uma sincronização inicial.
publish_to_ActiveDirectory true Este parâmetro está obsoleto e é suportado apenas para compatibilidade retroativa de scripts. Já não pode adicionar informação de publicação ao Microsoft Active Directory.
false Remove a informação de publicação do Active Directory.
queue_type sql Usa o SQL Server para armazenar transações. Esta propriedade só pode ser alterada se não existirem subscrições ativas.

Nota: O suporte para utilização do Microsoft Message Queuing foi descontinuado. Especificar um valor de msmq para @value resulta num erro.
redirected_publisher O nome do ouvinte do grupo de disponibilidade. Usado na replicação peer-to-peer quando um peer está num grupo de disponibilidade. Esta 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 mais informações, consulte Configurar um par como parte do grupo de disponibilidade ou Configurar ambos os pares nos grupos de disponibilidade.
repl_freq continuous Publica a saída de todas as transações baseadas em log.
snapshot Publica apenas eventos de sincronização agendados.
replicate_ddl 1 As instruções da linguagem de definição de dados (DDL) executadas no editor são replicadas. Esta propriedade não pode ser alterada para publicações que não sejam do SQL Server.
0 As instruções DDL não são replicadas. Esta 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 desativada quando se utiliza replicação peer-to-peer.
replicate_partition_switch true ALTER TABLE...SWITCH as instruções executadas contra a base de dados publicada devem ser replicadas para os Subscritores. Esta opção é válida apenas se allow_partition_switch for definido como true. Para mais informações, consulte Replicar Tabelas e Índices Particionados.
false ALTER TABLE...SWITCH as declarações não devem ser replicadas aos Subscritores.
retention int representando o período de retenção, em horas, para a atividade de subscrição. Se uma subscrição não estiver ativa durante o período de retenção, é removida.
snapshot_in_defaultfolder true Os ficheiros snapshot são armazenados na pasta de snapshots predefinida. Se alt_snapshot_folder também for especificado, os ficheiros snapshot são armazenados tanto na localização padrão como na alternativa.
false Os ficheiros snapshot são armazenados na localização alternativa especificada por alt_snapshot_folder.
status active Os dados da publicação estão disponíveis para os Subscritores imediatamente após a criação da publicação. Não é suportado para a Oracle Publishers.
inactive Os dados da publicação não estão disponíveis para os Subscritores quando a publicação é criada. Não é suportado para a Oracle Publishers.
sync_method native Utiliza a saída de cópia em massa em modo nativo de todas as tabelas ao sincronizar subscrições.
character Utiliza a saída de cópia em massa em modo carácter de todas as tabelas ao sincronizar subscrições.
concurrent Utiliza a saída do programa em modo nativo de cópia em massa de todas as tabelas, mas não bloqueia tabelas durante o processo de geração de snapshots. Não é válido para replicação de snapshots.
concurrent_c Utiliza a saída do programa de cópia em massa em modo de carácter de todas as tabelas, mas não bloqueia as tabelas durante o processo de geração de snapshots. Não é válido para replicação de snapshots.
taskid Esta propriedade está obsoleta e já não é suportada.
allow_drop true Permite DROP TABLE suporte a DLL para artigos que fazem parte da replicação transacional. Versão mínima suportada: SQL Server 2014 (12.x) Service Pack 2 ou superior e SQL Server 2016 (13.x) Service Pack 1 ou superior. Para mais informações, consulte a KB 3170123
false (padrão) Desativa DROP TABLE o suporte a DLL para artigos que fazem parte da replicação transacional.
NULL (padrão) Devolve a lista de valores suportados para @property.

@force_invalidate_snapshot [ = ] force_invalidate_snapshot

Reconhece que a ação tomada por este procedimento armazenado pode invalidar um snapshot existente. @force_invalidate_snapshot é bit, 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 detetar que a alteração requer um novo snapshot, ocorre um erro e não são feitas alterações.
  • 1 especifica que alterações ao artigo podem tornar o snapshot inválido. Se existirem subscrições existentes que exijam um novo snapshot, este valor dá permissão para que o snapshot existente seja marcado como obsoleto e gerado um novo snapshot.

Consulte a secção de Observações para as propriedades que, quando alteradas, exigem a geração de um novo instantâneo.

@force_reinit_subscription [ = ] force_reinit_subscription

Reconhece que a ação tomada por este procedimento armazenado pode exigir a reinicialização das subscrições existentes. @force_reinit_subscription é bit, 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 detetar que a alteração exigiria a reinicialização das subscrições existentes, ocorre um erro e não são feitas alterações.
  • 1 especifica que alterações ao artigo causam a reinicialização da subscrição existente e dá permissão para que a reinicialização da subscrição ocorra.

@publisher [ = ] N'editor'

Especifica um Editor de Server que não seja SQL. @publisher é sysname, com um padrão de NULL.

@publisher não deve ser usado ao alterar propriedades de artigos numa SQL Server Publisher.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Remarks

sp_changepublication é usado na replicação instantânea e na replicação transacional.

Após alterar qualquer uma das propriedades seguintes, deve gerar um novo snapshot 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 publish_to_active_directory parâmetro, o objeto SQL Server deve já estar criado no Active Directory.

Efeito da sincronização imediata

Quando a sincronização imediata está ativada, todas as alterações no registo são registadas imediatamente após a geração do snapshot inicial, mesmo que não haja subscrições. As alterações registadas são usadas quando um cliente está a usar backup para adicionar um novo nó par. Depois de restaurado o backup, o par é sincronizado com quaisquer outras alterações que ocorram após a realização do backup. Como os comandos são rastreados na base de dados de distribuição, a lógica de sincronização pode olhar para o último LSN guardado 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 mínimo de retenção é 0 horas, e o período máximo de retenção é 24 horas.)

Quando a sincronização imediata está desligada, as alterações são mantidas pelo menos durante o período mínimo de retenção e limpas imediatamente para todas as transações que já estão replicadas. Se a sincronização imediata estiver desligada e configurada com o período de retenção padrão, é provável que as alterações necessárias após a cópia de segurança tenham sido limpas, e o novo nó peer não será inicializado corretamente. A única opção que resta é colocar a topologia em pausa. Definir a sincronização imediata em ligado oferece maior flexibilidade e é a configuração recomendada para replicação P2P.

Examples

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

Apenas os membros do papel fixo de servidor administrador do sistema ou db_owner papel fixo de base de dados podem executar sp_changepublication.