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
Cria um snapshot ou publicação transacional. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.
Transact-SQL convenções de sintaxe
Syntax
sys.sp_addpublication
[ @publication = ] N'publication'
[ , [ @taskid = ] taskid ]
[ , [ @restricted = ] N'restricted' ]
[ , [ @sync_method = ] N'sync_method' ]
[ , [ @repl_freq = ] N'repl_freq' ]
[ , [ @description = ] N'description' ]
[ , [ @status = ] N'status' ]
[ , [ @independent_agent = ] N'independent_agent' ]
[ , [ @immediate_sync = ] N'immediate_sync' ]
[ , [ @enabled_for_internet = ] N'enabled_for_internet' ]
[ , [ @allow_push = ] N'allow_push' ]
[ , [ @allow_pull = ] N'allow_pull' ]
[ , [ @allow_anonymous = ] N'allow_anonymous' ]
[ , [ @allow_sync_tran = ] N'allow_sync_tran' ]
[ , [ @autogen_sync_procs = ] N'autogen_sync_procs' ]
[ , [ @retention = ] retention ]
[ , [ @allow_queued_tran = ] N'allow_queued_tran' ]
[ , [ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder' ]
[ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
[ , [ @pre_snapshot_script = ] N'pre_snapshot_script' ]
[ , [ @post_snapshot_script = ] N'post_snapshot_script' ]
[ , [ @compress_snapshot = ] N'compress_snapshot' ]
[ , [ @ftp_address = ] N'ftp_address' ]
[ , [ @ftp_port = ] ftp_port ]
[ , [ @ftp_subdirectory = ] N'ftp_subdirectory' ]
[ , [ @ftp_login = ] N'ftp_login' ]
[ , [ @ftp_password = ] N'ftp_password' ]
[ , [ @allow_dts = ] N'allow_dts' ]
[ , [ @allow_subscription_copy = ] N'allow_subscription_copy' ]
[ , [ @conflict_policy = ] N'conflict_policy' ]
[ , [ @centralized_conflicts = ] N'centralized_conflicts' ]
[ , [ @conflict_retention = ] conflict_retention ]
[ , [ @queue_type = ] N'queue_type' ]
[ , [ @add_to_active_directory = ] N'add_to_active_directory' ]
[ , [ @logreader_job_name = ] N'logreader_job_name' ]
[ , [ @qreader_job_name = ] N'qreader_job_name' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @allow_initialize_from_backup = ] N'allow_initialize_from_backup' ]
[ , [ @replicate_ddl = ] replicate_ddl ]
[ , [ @enabled_for_p2p = ] N'enabled_for_p2p' ]
[ , [ @publish_local_changes_only = ] N'publish_local_changes_only' ]
[ , [ @enabled_for_het_sub = ] N'enabled_for_het_sub' ]
[ , [ @p2p_conflictdetection = ] N'p2p_conflictdetection' ]
[ , [ @p2p_originator_id = ] p2p_originator_id ]
[ , [ @p2p_continue_onconflict = ] N'p2p_continue_onconflict' ]
[ , [ @allow_partition_switch = ] N'allow_partition_switch' ]
[ , [ @replicate_partition_switch = ] N'replicate_partition_switch' ]
[ , [ @allow_drop = ] N'allow_drop' ]
[ , [ @p2p_conflictdetection_policy = ] N'p2p_conflictdetection_policy' ]
[ ; ]
Arguments
[ @publication = ] N'publicação'
O nome da publicação a criar. @publication é sysname, sem padrão. O nome deve ser exclusivo dentro do banco de dados.
[ @taskid = ] taskid
Suportado apenas para compatibilidade retroativa; Usa sp_addpublication_snapshot.
[ @restricted = ] N'restringido'
Suportado apenas para compatibilidade retroativa; usar default_access.
[ @sync_method = ] N'sync_method'
O modo de sincronização. @sync_method é nvarchar(40) e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
native
1 |
Produz saída de programa de cópia em massa em modo nativo de todas as tabelas. |
character |
Produz a saída do programa de cópia em massa em modo carácter de todas as tabelas.
Nota: Para um Oracle Publisher, character é válido apenas para replicação de snapshots. |
concurrent
1 |
Produz a saída do programa de cópia em massa em modo nativo de todas as tabelas, mas não bloqueia as tabelas durante o snapshot. Apenas suportado para publicações transacionais. |
concurrent_c |
Produz a saída do programa de cópia em massa em modo carácter de todas as tabelas, mas não bloqueia as tabelas durante o snapshot. Apenas suportado para publicações transacionais. |
database snapshot |
Produz a saída de programa de cópia em massa em modo nativo de todas as tabelas a partir de um instantâneo de base de dados. Snapshots de bases de dados não estão disponíveis em todas as edições do SQL Server. Para obter uma lista de recursos suportados pelas edições do SQL Server, consulte Edições e recursos com suporte do SQL Server 2022. |
database snapshot character |
Produz a saída do programa de cópia em massa em modo carácter de todas as tabelas a partir de um instantâneo de base de dados. Snapshots de bases de dados não estão disponíveis em todas as edições do SQL Server. Para obter uma lista de recursos suportados pelas edições do SQL Server, consulte Edições e recursos com suporte do SQL Server 2022. |
NULL (padrão) |
Por defeito para native editores SQL Server. Para editores não-SQL Server, o character valor de @repl_freqSnapshot é e concurrent_c para todos os outros casos. |
1 Não é suportado para editoras Oracle.
[ @repl_freq = ] N'repl_freq'
O tipo de frequência de replicação, @repl_freq é nvarchar(10), e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
continuous (padrão) |
O agente leitor de registos funciona continuamente. Para editores não-SQL Server, isto requer que @sync_method seja definido para concurrent_c. |
snapshot |
O agente leitor de registo funciona com um horário. Para editores não-SQL Server, isto requer que @sync_method seja definido para character. |
[ @description = ] N'descrição'
Uma descrição opcional para a publicação.
@description é nvarchar(255), com um padrão de NULL.
[ @status = ] N'estado'
Especifica se existem dados de publicação disponíveis. @status é nvarchar(8), e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
active |
Os dados de publicação estão disponíveis imediatamente para os Assinantes. |
inactive (padrão) |
Os dados de publicação não estão disponíveis para os Subscritores quando a publicação é criada pela primeira vez (eles podem subscrever, mas as subscrições não são processadas). |
Não é suportado para a Oracle Publishers.
[ @independent_agent = ] N'independent_agent'
Especifica se existe um Distribution Agent autónomo para esta publicação.
@independent_agent é nvarchar(5), com um padrão de false.
- Se
true, existe um Distribution Agent independente para esta publicação. - Se
false, a publicação utiliza um Distribution Agent partilhado, e cada par de base de dados Publisher/base de dados Subscriber tem um único Agente partilhado.
[ @immediate_sync = ] N'immediate_sync'
Especifica se os ficheiros de sincronização para a publicação são criados cada vez que o Snapshot Agent é executado.
@immediate_sync é nvarchar(5), com um padrão de false.
Se true, os ficheiros de sincronização são criados ou recriados cada vez que o Snapshot Agent é executado. Os assinantes podem aceder imediatamente aos ficheiros de sincronização se o Snapshot Agent tiver sido concluído antes da subscrição ser criada. As novas subscrições recebem os ficheiros de sincronização mais recentes gerados pela execução mais recente do Snapshot Agent.
@independent_agent deve ser true para @immediate_sync ser true. Se false, os ficheiros de sincronização são criados apenas se existirem novas subscrições. Deve chamar sp_addsubscription para cada subscrição quando adiciona incrementalmente um novo artigo a uma publicação existente. Os assinantes não podem receber os ficheiros de sincronização após a subscrição até que os Snapshot Agents estejam iniciados e concluídos.
[ @enabled_for_internet = ] N'enabled_for_internet'
Especifica se a publicação está ativada para a Internet e determina se o protocolo de transferência de ficheiros (FTP) pode ser usado para transferir os ficheiros snapshot para um assinante.
@enabled_for_internet é nvarchar(5), com um padrão de false. Se true, os ficheiros de sincronização da publicação são colocados no C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp diretório. O utilizador deve criar o Ftp diretório.
[ @allow_push = ] N'allow_push'
Especifica se podem ser criadas subscrições push para a publicação em questão.
@allow_push é nvarchar(5), com um padrão de true, que permite subscrições push na publicação.
[ @allow_pull = ] N'allow_pull'
Especifica se podem ser criadas subscrições pull para a publicação em questão.
@allow_pull é nvarchar(5), com um padrão de false. Se false, as subscrições pull não são permitidas na publicação.
[ @allow_anonymous = ] N'allow_anonymous'
Especifica se podem ser criadas subscrições anónimas para a publicação em questão.
@allow_anonymous é nvarchar(5), com um padrão de false. Se true, @immediate_sync também deve ser definido como true. Se false, não são permitidas subscrições anónimas na publicação.
[ @allow_sync_tran = ] N'allow_sync_tran'
Especifica se são permitidas subscrições de atualização imediata na publicação.
@allow_sync_tran é nvarchar(5), com um padrão de false.
true não é suportado pela Oracle Publishers.
[ @autogen_sync_procs = ] N'autogen_sync_procs'
Especifica se o procedimento armazenado de sincronização para atualizar subscrições é gerado no Publisher. @autogen_sync_procs é nvarchar(5) e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
true |
Está ativado automaticamente ao atualizar subscrições. |
false |
Definir automaticamente quando a atualização de subscrições não está ativada ou para editores da Oracle. |
NULL (padrão) |
Os valores predefinidos para true quando a atualização de subscrições está ativada e para false quando a atualização de subscrições não está ativada. |
Note
O valor fornecido pelo utilizador para @autogen_sync_procsserá sobreposto dependendo dos valores especificados para @allow_queued_tran e @allow_sync_tran.
[ @retention = ] retenção
O período de retenção em horas para atividade de subscrição.
@retention é int, com um padrão de 336. Se uma subscrição não estiver ativa durante o período de retenção, expira e é removida. O valor pode ser superior ao período máximo de retenção da base de dados de distribuição utilizada pelo Publisher. Se 0, as subscrições conhecidas da publicação nunca expirarão e serão removidas pelo Agente de Limpeza de Subscrições Expiradas.
[ @allow_queued_tran = ] N'allow_queued_tran'
Permite ou desativa a fila de alterações no Assinante até que possam ser aplicadas no Publisher.
@allow_queued_tran é nvarchar(5), com um padrão de false.
- Se
false, as alterações no Assinante não estão em fila. -
truenão é suportado pela Oracle Publishers.
[ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder'
Especifica se os ficheiros snapshot estão armazenados na pasta predefinida.
@snapshot_in_defaultfolder é nvarchar(5), com um padrão de true.
- Se
true, os ficheiros snapshot podem ser encontrados na pasta predefinida. - Se
false, os ficheiros snapshot foram armazenados na localização alternativa especificada por @alt_snapshot_folder.
Locais alternativos podem estar noutro servidor, numa unidade de rede ou em meios removíveis (como discos removíveis). Também pode guardar os ficheiros snapshot num site FTP, para serem recuperados pelo assinante mais tarde. Este parâmetro pode ser verdadeiro e ainda assim ter uma localização no parâmetro @alt_snapshot_folder . Esta combinação especifica que os ficheiros snapshot serão armazenados tanto na localização padrão como na alternativa.
[ @alt_snapshot_folder = ] N'alt_snapshot_folder'
Especifica a localização da pasta alternativa para o snapshot.
@alt_snapshot_folder é nvarchar(255), com um padrão de NULL.
[ @pre_snapshot_script = ] N'pre_snapshot_script'
Especifica um ponteiro para uma localização .sql ficheiro.
@pre_snapshot_script é nvarchar(255), com um padrão de NULL. O Distribution Agent executará o script pré-snapshot antes de executar qualquer um dos scripts de objeto replicados ao aplicar um snapshot num Subscriber. O script é executado no contexto de segurança utilizado pelo Distribution Agent ao ligar-se à base de dados de subscrição.
[ @post_snapshot_script = ] N'post_snapshot_script'
Especifica um apontador para a localização de um .sql ficheiro.
@post_snapshot_script é nvarchar(255), com um padrão de NULL. O Distribution Agent executará o script pós-snapshot depois de todos os outros scripts de objeto replicados e dados terem sido aplicados durante uma sincronização inicial. O script é executado no contexto de segurança utilizado pelo Distribution Agent ao ligar-se à base de dados de subscrição.
[ @compress_snapshot = ] N'compress_snapshot'
Especifica que o snapshot escrito na localização @alt_snapshot_folder deve ser comprimido no formato Microsoft CAB.
@compress_snapshot é nvarchar(5), com um padrão de false.
-
falseespecifica que os snapshots não são comprimidos. -
trueespecifica que os snapshots são comprimidos.
Ficheiros snapshot com mais de 2 gigabytes (GB) não podem ser comprimidos. Os ficheiros snapshot comprimidos são descomprimidos no local onde o Distribution Agent é executado; as subscrições pull são normalmente usadas com snapshots comprimidos para que os ficheiros sejam descomprimidos no Assinante. O snapshot na pasta padrão não pode ser comprimido.
[ @ftp_address = ] N'ftp_address'
O endereço de rede do serviço FTP para o Distribuidor.
@ftp_address é sysname, com o padrão de NULL. Especifica onde estão localizados os ficheiros snapshot de publicação para que o Agente de Distribuição ou Agente de Fusão de um assinante possa levantar. Como esta propriedade é armazenada para cada publicação, cada publicação pode ter um @ftp_address diferente. A publicação deve suportar a propagação de instantâneos usando 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 estão localizados os ficheiros snapshot de publicação para o Distribution Agent ou Merge Agent de um assinante levantar. Como esta propriedade é armazenada para cada publicação, cada publicação pode ter o seu próprio @ftp_port.
[ @ftp_subdirectory = ] N'ftp_subdirectory'
Especifica onde os ficheiros snapshot estão disponíveis para o Agente de Distribuição ou Merge Agent do assinante recolher, caso a publicação suporte propagação de snapshots usando FTP.
@ftp_subdirectory é nvarchar(255), com um padrão de NULL. Como esta propriedade é armazenada para cada publicação, cada publicação pode ter o seu próprio @ftp_subdirctory ou optar por não ter subdiretório, indicado com um NULL valor.
[ @ftp_login = ] N'ftp_login'
O nome de utilizador usado para se ligar ao serviço FTP.
@ftp_login é sysname, com um padrão de anonymous.
[ @ftp_password = ] N'ftp_password'
A senha de usuário usada para se conectar ao serviço FTP.
@ftp_password é sysname, com um padrão de NULL.
[ @allow_dts = ] N'allow_dts'
Especifica que a publicação permite transformações de dados. Pode especificar um pacote DTS ao criar uma subscrição.
@allow_dts é nvarchar(5), com um padrão de false, que não permite transformações DTS. Quando @allow_dts é verdadeira, @sync_method deve ser definida como ou characterconcurrent_c.
true não é suportado pela Oracle Publishers.
[ @allow_subscription_copy = ] N'allow_subscription_copy'
Permite ou desativa a capacidade de copiar as bases de dados por subscrição que subscrevem esta publicação.
@allow_subscription_copy é nvarchar(5), com um padrão de false.
[ @conflict_policy = ] N'conflict_policy'
Especifica a política de resolução de conflitos seguida quando é usada a opção de assinante de atualização em fila. @conflict_policy é nvarchar(100), e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
pub wins |
Publisher 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 instantânea, a política padrão torna-se sub reinit. Se NULL e a publicação não for uma publicação instantânea, o padrão passa a ser pub wins. |
Não é suportado para a Oracle Publishers.
[ @centralized_conflicts = ] N'centralized_conflicts'
Especifica se registos de conflito estão armazenados no Publisher.
@centralized_conflicts é nvarchar(5), com um padrão de NULL.
- Se
true, os registos de conflito são armazenados no Publisher. - Se
false, os registos de conflito são armazenados tanto no editor como no assinante que causou o conflito.
Não é suportado para a Oracle Publishers.
[ @conflict_retention = ] conflict_retention
Especifica o período de retenção do conflito, em dias. Este é o período em que os metadados de conflito são armazenados para replicação transacional peer-to-peer e subscrições de atualização em fila.
@conflict_retention é int, com um padrão de 14.
Não é suportado para a Oracle Publishers.
[ @queue_type = ] N'queue_type'
Especifica que tipo de fila é utilizada. @queue_type é nvarchar(10), e pode ser um desses valores.
| Value | Description |
|---|---|
sql |
Usa o SQL Server para armazenar transações. |
NULL (padrão) |
Por defeito, sql, especifica usar o SQL Server para armazenar transações. |
Note
O suporte para utilização do Microsoft Message Queuing foi descontinuado. Especificar um valor de msmq resultará num aviso, e a replicação definirá automaticamente o valor para sql.
Não é suportado para a Oracle Publishers.
[ @add_to_active_directory = ] N'add_to_active_directory'
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.
[ @logreader_job_name = ] N'logreader_job_name'
O nome de um agente já existente.
@logreader_job_name é sysname, com um padrão de NULL. Este parâmetro só é especificado quando o Agente Leitor de Registo utiliza um trabalho existente em vez de ser criado um novo.
[ @qreader_job_name = ] N'qreader_job_name'
O nome de um agente já existente.
@qreader_job_name é sysname, com um padrão de NULL. Este parâmetro só é especificado quando o Agente Leitor de Fila utiliza um trabalho existente em vez de um novo ser criado.
@publisher [ = ] N'editor'
Especifica um editor que não seja SQL Server.
@publisher é sysname, com um padrão de NULL.
@publisher não deve ser usado ao adicionar uma publicação a um SQL Server Publisher.
[ @allow_initialize_from_backup = ] N'allow_initialize_from_backup'
Indica se os Subscritores podem inicializar uma subscrição desta publicação a partir de um backup em vez de um snapshot inicial. @allow_initialize_from_backup é nvarchar(5), e pode ser um destes valores:
| Value | Description |
|---|---|
true |
Permite a inicialização a partir de um backup. |
false |
Desativa a inicialização a partir de um backup. |
NULL (padrão) |
É o padrão para true uma publicação numa topologia de replicação peer-to-peer e false para todas as outras publicações. |
Para obter mais informações, consulte Inicializar uma assinatura transacional sem um instantâneo.
Warning
Para evitar a perda de dados do assinante, ao usar sp_addpublication com @allow_initialize_from_backup = N'true', use @immediate_sync = N'true'sempre .
[ @replicate_ddl = ] replicate_ddl
Indica se a replicação do esquema é suportada para a publicação.
@replicate_ddl é int, com um padrão de 1 para SQL Server Editores e 0 para editores não-SQL Server.
-
1indica que as instruções da linguagem de definição de dados (DDL) executadas no editor são replicadas. -
0indica que as instruções DDL não são replicadas.
Note
A replicação de esquemas não é suportada pela Oracle Publishers.
Para obter mais informações, consulte Alterações de Esquema em Bancos de Dados de Publicação.
O parâmetro @replicate_ddl é respeitado quando uma instrução DDL adiciona uma coluna. O parâmetro @replicate_ddl é ignorado quando uma instrução DDL altera ou elimina uma coluna pelas seguintes razões.
Quando uma coluna é eliminada,
sysarticlecolumnsdeve ser atualizada para evitar que novas instruções DML incluam a coluna eliminada, o que faria com que o agente de distribuição falhasse. O parâmetro @replicate_ddl é ignorado porque a replicação tem sempre de replicar a alteração do esquema.Quando uma coluna é alterada, o tipo de dado de origem ou a nulidade pode ter mudado, fazendo com que as instruções DML contenham um valor que pode não ser compatível com a tabela do assinante. Tais instruções DML podem causar a falha do agente de distribuição. O parâmetro @replicate_ddl é ignorado porque a replicação tem sempre de replicar a alteração do esquema.
Quando uma instrução DDL adiciona uma nova coluna,
sysarticlecolumnsnão inclui a nova coluna. As instruções DML não tentam replicar dados para a nova coluna. O parâmetro é respeitado porque replicar ou não replicar o DDL é aceitável.
[ @enabled_for_p2p = ] N'enabled_for_p2p'
Permite que a publicação seja utilizada numa topologia de replicação peer-to-peer.
@enabled_for_p2p é nvarchar(5), com um padrão de false.
true indica que a publicação suporta replicação peer-to-peer. Ao 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. -
@conflict_policy deve ser
false. -
@independent_agent deve ser
true. -
@repl_freq deve ser
continuous. -
@replicate_ddl deve ser
1.
Para mais informações, consulte Peer-to-Peer - Replicação Transacional.
[ @publish_local_changes_only = ] N'publish_local_changes_only'
Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.
[ @enabled_for_het_sub = ] N'enabled_for_het_sub'
Permite que a publicação suporte assinantes que não sejam do SQL Server.
@enabled_for_het_sub é nvarchar(5), com um padrão de false. Um valor de true significa que a publicação suporta subscritores que não são do SQL Server. Quando @enabled_for_het_sub é true, aplicam-se as seguintes restrições:
-
@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
nativenemconcurrent.
Para mais informações, consulte Assinantes Não-SQL do Servidor.
[ @p2p_conflictdetection = ] N'p2p_conflictdetection'
Permite que o Distribution Agent detete conflitos se a publicação estiver ativada para replicação peer-to-peer.
@p2p_conflictdetection é nvarchar(5), com um padrão de false. Para mais informações, veja Peer-to-Peer - Deteção de Conflitos na Replicação Peer-to-Peer.
[ @p2p_originator_id = ] p2p_originator_id
Especifica um ID para um nó numa topologia peer-to-peer.
@p2p_originator_id é int, com um padrão de NULL. Este ID é usado para deteção de conflitos se @p2p_conflictdetection estiver definido como TRUE. Especifique um ID positivo, não nulo, que não tenha sido usado na topologia. Para uma lista de IDs utilizados, execute sp_help_peerconflictdetection.
[ @p2p_continue_onconflict = ] N'p2p_continue_onconflict'
Determina se o Distribution Agent continua a processar alterações após a deteção de um conflito.
@p2p_continue_onconflict é nvarchar(5), com um padrão de false.
Caution
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.
[ @allow_partition_switch = ] N'allow_partition_switch'
Especifica se ALTER TABLE...SWITCH as instruções podem ser executadas contra a base de dados publicada.
@allow_partition_switch é nvarchar(5), com um padrão de false. Para mais informações, consulte Replicar Tabelas e Índices Particionados.
[ @replicate_partition_switch = ] N'replicate_partition_switch'
Especifica se ALTER TABLE...SWITCH as instruções executadas contra a base de dados publicada devem ser replicadas para os Subscritores.
@replicate_partition_switch é nvarchar(5), com um padrão de NULL. Esta opção só é válida se @allow_partition_switch estiver definida como TRUE.
[ @allow_drop = ] N'allow_drop'
Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.
[ @p2p_conflictdetection_policy = ] N'p2p_conflictdetection_policy'
Aplica-se a: SQL Server 2019 (15.x) 13 e versões posteriores.
@p2p_conflictdetection_policy é nvarchar(12), e pode ser um destes valores:
| Value | Description |
|---|---|
originatorid (padrão) |
O agente de distribuição deteta o conflito e decide o vencedor com base no ID originador, se p2p_continue_onconflict = N'true'. Caso contrário, gera um erro. |
lastwriter |
O agente de distribuição deteta o conflito e decide o vencedor com base na data do último escritor se p2p_continue_onconflict = N'true'. Caso contrário, gera um erro. |
Note
Quando especificas originatorid, a deteção de conflitos é a mesma que era no SQL Server 2019 (15.x), 12 e versões anteriores. Quando especifica lastwriter, o SQL Server permite que conflitos se resolvam automaticamente com base na escrita mais recente.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Remarks
sp_addpublication é usado na replicação instantânea e na replicação transacional.
Se existirem múltiplas publicações que publiquem o mesmo objeto de base de dados, apenas publicações com valor 1@replicate_ddl de replicam ALTER TABLE, ALTER VIEW, ALTER PROCEDURE, ALTER FUNCTION, e ALTER TRIGGER instruções DDL. No entanto, uma ALTER TABLE DROP COLUMN declaração DDL é replicada por todas as publicações que publicam a coluna eliminada.
Com a replicação DDL ativada (@replicate_ddl = 1) para uma publicação, para fazer alterações DDL não replicantes na publicação, sp_changepublication deve primeiro ser executada para definir @replicate_ddl para 0. Após a emissão das instruções DDL não replicantes, sp_changepublication pode ser executada novamente para ativar a replicação DDL.
Examples
-- 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
Permissions
Apenas os membros do papel fixo de servidor administrador do sistema ou db_owner papel fixo de base de dados podem executar sp_addpublication. Os logins de Windows authentication devem ter uma conta de utilizador na base de dados que represente a sua conta de utilizador Windows. Uma conta de utilizador a representar um grupo do Windows não é suficiente.
Conteúdo relacionado
- 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 Base de Dados
- Procedimentos armazenados de replicação (Transact-SQL)