Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure 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.
-
0Especifica 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. -
1especifica 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.
-
0Especifica 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. -
1especifica 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_foldercompress_snapshotenabled_for_het_subftp_addressftp_loginftp_passwordftp_portftp_subdirectorypost_snapshot_scriptpre_snapshot_scriptsnapshot_in_defaultfoldersync_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.