Compartilhar via


sp_addmergepublication (Transact-SQL)

Cria uma nova publicação de mesclagem. Esse procedimento armazenado é executado no Publicador, no banco de dados que está sendo publicado.

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

sp_addmergepublication [ @publication = ] 'publication' 
    [ , [ @description = ] 'description' 
    [ , [ @retention = ] retention ] 
    [ , [ @sync_mode = ] 'sync_mode' ] 
    [ , [ @allow_push = ] 'allow_push' ] 
    [ , [ @allow_pull = ] 'allow_pull' ] 
    [ , [ @allow_anonymous = ] 'allow_anonymous' ] 
    [ , [ @enabled_for_internet = ] 'enabled_for_internet' ] 
    [ , [ @centralized_conflicts = ] 'centralized_conflicts' ] 
    [ , [ @dynamic_filters = ] 'dynamic_filters' ] 
    [ , [ @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' ] 
    [ , [ @conflict_retention = ] conflict_retention ] 
    [ , [ @keep_partition_changes = ] 'keep_partition_changes' ] 
    [ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ] 
    [ , [ @allow_synctoalternate = ] 'allow_synctoalternate' ] 
    [ , [ @validate_subscriber_info = ] 'validate_subscriber_info' ] 
    [ , [ @add_to_active_directory = ] 'add_to_active_directory' ] 
    [ , [ @max_concurrent_merge = ] maximum_concurrent_merge ] 
    [ , [ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots ]
    [ , [ @use_partition_groups = ] 'use_partition_groups' ]
    [ , [ @publication_compatibility_level = ] 'backward_comp_level' ]
    [ , [ @replicate_ddl = ] replicate_ddl ]
    [ , [ @allow_subscriber_initiated_snapshot = ] 'allow_subscriber_initiated_snapshot' ] 
    [ , [ @allow_web_synchronization = ] 'allow_web_synchronization' ] 
    [ , [ @web_synchronization_url = ] 'web_synchronization_url' ]
    [ , [ @allow_partition_realignment = ] 'allow_partition_realignment' ]
    [ , [ @retention_period_unit = ] 'retention_period_unit' ]
    [ , [ @generation_leveling_threshold = ] generation_leveling_threshold ]
    [ , [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy ]
    [ , [ @conflict_logging = ] 'conflict_logging' ]

Argumentos

  • [ @publication = ] 'publication'
    É o nome da publicação de mesclagem a ser criada. publication é sysname, sem nenhum padrão e não deve ser a palavra-chave ALL. O nome da publicação deve ser exclusivo no banco de dados.

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

  • [ @retention = ] retention
    É o período de retenção, em unidades de período de retenção, para o qual salvar alterações para a publication. retention é int, com um padrão de 14 unidades. Unidades de período de retenção são definidas por retention_period_unit. Se a assinatura não estiver sincronizada dentro do período de retenção e as alterações pendentes que por ventura tenha recebido tiverem sido removidas por uma operação de limpeza no Distribuidor, a assinatura irá expirar e deverá ser reiniciada. O período máximo de retenção permitido é o número de dias entre 31 de dezembro de 9999 e a data atual.

    ObservaçãoObservação

    O período de retenção para publicações de mesclagem tem um período de tolerância de 24 horas para acomodar Assinantes em fusos horários diferentes. Por exemplo, se você definir um período de retenção de um dia, o período de retenção real será de 48 horas.

  • [ @sync_mode = ] 'sync_mode'
    É o modo de sincronização inicial de assinantes na publicação. sync_mode é nvarchar(10) e pode ser um dos valores a seguir.

    Valor

    Descrição

    native (padrão)

    Produz saída de programa de cópia em massa em modo nativo de todas as tabelas.

    character

    Produz saída de programa de cópia em massa em modo de caractere de todas as tabelas. Exigido no suporte a Assinantes do Microsoft SQL Server Compact e que não sejam do SQL Server.

  • [ @allow_push = ] 'allow_push'
    Especifica se podem ser criadas assinaturas push para a publicação determinada. allow_push é nvarchar(5), com um padrão de TRUE, que permite assinaturas push na publicação.

  • [ @allow_pull = ] 'allow_pull'
    Especifica se podem ser criadas assinaturas pull para a publicação determinada. allow_pull é nvarchar(5), com um padrão de TRUE, que permite assinaturas pull na publicação. Você deve especificar verdadeiro para dar suporte a Assinantes SQL Server Compact.

  • [ @allow_anonymous = ] 'allow_anonymous'
    Especifica se podem ser criadas assinaturas anônimas para a publicação determinada. allow_anonymous é nvarchar(5), com um padrão de TRUE, que permite assinaturas anônimas na publicação. Para dar suporte a Assinantes SQL Server Compact, é necessário especificar true.

  • [ @enabled_for_internet = ] 'enabled_for_internet'
    Especifica se a publicação está habilitada para a Internet, e determina se o protocolo FTP pode ser usado para transferir os arquivos de instantâneo para um assinante. enabled_for_internet é nvarchar(5), com um padrão de FALSE. Se for true, os arquivos de sincronização da 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. Se for false, a publicação não estará habilitada para acesso à Internet.

  • [ @centralized_conflicts =] 'centralized_conflicts'
    Esse parâmetro foi substituído e tem suporte somente para compatibilidade com versões anteriores. Use conflict_logging para especificar os local onde os registros de conflito são armazenados.

  • [ @dynamic_filters =] 'dynamic_filters'
    Permite que a publicação de mesclagem use filtros de linha com parâmetros. dynamic_filters é nvarchar(5), com um padrão de FALSE.

    ObservaçãoObservação

    Você não deve especificar esse parâmetro mas, em vez disso, permitir que o SQL Server determine se filtros de linha com parâmetros estão sendo usado usados. Se você especificar um valor de true para dynamic_filters, deverá definir um filtro de linha com parâmetros para o artigo. Para obter mais informações, consulte Definir e modificar um filtro de linha com parâmetros para um artigo de mesclagem.

  • [ @snapshot_in_defaultfolder = ] 'snapshot_in_default_folder'
    Especifica se os arquivos de instantâneo são armazenados na pasta padrão. snapshot_in_default_folder é nvarchar(5), com um padrão TRUE. Se for true, arquivos de instantâneo poderão ser localizados na pasta padrão. Se for false, os arquivos de instantâneo serão armazenados no local especificado por alternate_snapshot_folder. Locais alternativos podem ser 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 recuperação posterior pelo Assinante. Observe que esse parâmetro pode ser verdadeiro e ainda ter um local especificado por 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 Agente de Mesclagem executará o script pré-instantâneo antes de qualquer script de objeto replicado ao aplicar o instantâneo no Assinante. O script é executado no contexto de segurança usado pelo Agente de Mesclagem ao se conectar ao banco de dados de assinatura. Não são executados scripts de pré-instantâneo em Assinantes SQL Server Compact.

  • [ @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 Agente de Mesclagem executará o script pós-instantâneo depois que todos os outros scripts de objeto replicado tenham sido aplicados durante uma sincronização inicial. O script é executado no contexto de segurança usado pelo Agente de Mesclagem ao se conectar ao banco de dados de assinatura. Não são executados scripts de pós-instantâneo em Assinantes SQL Server Compact.

  • [ @compress_snapshot = ] 'compress_snapshot'
    Especifica que o instantâneo gravado no local @alt_snapshot_folder deve ser 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 deve ser compactado. Arquivos de instantâneo maiores que 2 GB não podem ser compactados. Arquivos de instantâneo compactados são descompactados no local onde o Agente de Mesclagem é executado; as 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. Para dar suporte a Assinantes SQL Server Compact, é necessário especificar false.

  • [ @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 Agente de Mesclagem ou por um Assinante. Considerando que essa propriedade é armazenada para cada publicação, cada publicação pode ter um ftp_address diferente. A publicação deve oferecer suporte à propagação de instantâneos por meio de 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 os arquivos de instantâneo de publicação ficam localizados para serem captados pelo Agente de Mesclagem ou por um Assinante. Como 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 retirados pelo 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. Como essa propriedade é armazenada para cada publicação, cada publicação poderá ter seu próprio ftp_subdirctory ou escolher não ter um subdiretório indicado com um valor de NULL.

    Na pré-geração de instantâneos para publicação com filtros com parâmetros, o instantâneo de dados de cada partição de Assinante precisa estar em sua própria pasta. A estrutura de diretório para instantâneos pré-gerados por meio de FTP deve seguir a estrutura a seguir:

    alternate_snapshot_folder\ftp\publisher_publicationDB_publication\partitionID.

    ObservaçãoObservação

    Os valores acima em itálico dependerão das especificações da publicação e da partição de Assinante.

  • [ @ftp_login = ] 'ftp_login'
    É o nome de usuário usado para se conectar ao serviço FTP. ftp_login é sysname, com um padrão de 'anonymous'.

  • [ @ftp_password = ] 'ftp_password'
    É a senha de usuário usada para se conectar ao serviço FTP. ftp_password é sysname, com um padrão de NULL.

    Observação sobre segurançaObservação sobre segurança

    Não use uma senha em branco. Use uma senha forte.

  • [ @conflict_retention = ] conflict_retention
    Especifica o período de retenção, em dias, durante o qual os conflitos são retidos. conflict_retention é int, com um padrão de 14 dias antes da linha de conflito é limpo da tabela de conflitos.

  • [ @keep_partition_changes = ] 'keep_partition_changes'
    Especifica se otimizações de alteração de partição devem ser habilitadas quando partições pré-computadas não podem ser usadas. keep_partition_changes é nvarchar(5), com um padrão TRUE. false significa que as alterações de partição não são otimizadas e, quando partições pré-computadas não são usadas, as partições enviadas a todos os Assinantes serão verificadas quando os dados são alterados em uma partição. true significa que a as alterações de partição são otimizadas e somente Assinantes com linhas nas partições alteradas são afetados. Ao usar partições pré-computadas, defina use_partition_groups como true e keep_partition_changes como false. Para obter mais informações, consulte Otimizar o desempenho de filtro parametrizado com partições pré-computadas.

    ObservaçãoObservação

    Se você especificar um valor de true para keep_partition_changes, especifique um valor de 1 para o parâmetro do Agente de Instantâneo -MaxNetworkOptimization. Para obter mais informações sobre esse parâmetro, consulte Replication Snapshot Agent. Para obter mais informações sobre como especificar parâmetros de agente, consulte Administração do agente de replicação.

    Com os assinantes do SQL Server Compact, keep_partition_changes deve ser definido como true para assegurar que as exclusões sejam propagadas corretamente. Quando definido como falso, o assinante pode ter mais linhas do que o esperado.

  • [ @allow_subscription_copy= ] 'allow_subscription_copy'
    Habilita ou desabilita a capacidade para copiar os bancos de dados de assinatura que assinam essa publicação. allow_subscription_copy é nvarchar(5), com um padrão de FALSE. O tamanho do banco de dados de assinatura copiado deve ser menor que 2 gigabytes (GB).

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

  • [ @validate_subscriber_info = ] 'validate_subscriber_info'
    Lista as funções usadas para definir uma partição de Assinante dos dados publicados quando filtros de linha com parâmetros são usados. validate_subscriber_info é nvarchar(500), com um padrão de NULL. Essa informação é usada pelo Agente de Mesclagem para validar a partição do Assinante. Por exemplo, se SUSER_SNAME for usado no filtro de linha com parâmetros, o parâmetro deverá ser @validate\_subscriber\_info=N'SUSER_SNAME()'.

    ObservaçãoObservação

    Você não deve especificar esse parâmetro, mas sim permitir que o SQL Server determine automaticamente os critérios de filtragem.

  • [ @add_to_active_directory = ] 'add_to_active_directory'
    Esse parâmetro foi substituído e tem suporte somente para compatibilidade com versões anteriores. Você não pode mais adicionar informações de publicação ao Microsoft Active Directory.

  • [ @max_concurrent_merge = ] maximum_concurrent_merge
    O número máximo de processos de mesclagem simultâneos. maximum_concurrent_merge é int com um padrão 0. Um valor de 0 para essa propriedade significa que não há limite para o número de processos de mesclagem em execução em determinado momento. Essa propriedade define um limite para o número de processos de mesclagem simultâneos que pode ser executado em uma publicação de mesclagem de uma vez. Se houver mais processos de mesclagem agendados ao mesmo tempo do que o valor permitido para execução, os trabalhos em excesso serão enfileirados e esperarão até que o processo de mesclagem em execução no momento seja concluído.

  • [ @max_concurrent_dynamic_snapshots =] max_concurrent_dynamic_snapshots
    O número máximo de sessões de Agente de Instantâneo que podem ser executadas simultaneamente para gerar instantâneos de dados filtrados para partições de Assinante. maximum_concurrent_dynamic_snapshots é int com um padrão 0. Se for 0, não haverá nenhum limite para o número de sessões de instantâneo. Se houver mais processos de instantâneo agendados ao mesmo tempo do que o valor permitido para execução, os trabalhos em excesso serão enfileirados e esperarão até que o processo de instantâneo em execução no momento seja concluído.

  • [ @ use_partition_groups = ] 'use_partition_groups'
    Especifica se as partições pré-computadas devem ser usadas para otimizar o processo de sincronização. use_partition_groups é nvarchar(5), e pode ter um destes valores:

    Valor

    Descrição

    true

    A publicação usa partições pré-computadas.

    false

    A publicação não usa partições pré-computadas.

    NULL (padrão)

    O sistema escolhe a estratégia de particionamento.

    Partições pré-computadas são usadas por padrão. Para evitar usar partições pré-computadas, use_partition_groups deve ser definido como false. Quando NULL, o sistema decidirá se partições pré-computadas podem ser usadas. Se partições pré-computadas não puderem ser usadas, esse valor se tornará false efetivamente, sem gerar qualquer erro. Nesses casos, keep_partition_changes pode ser definido como true para fornecer alguma otimização. Para obter mais informações, consulte Filtros de linha com parâmetros e Otimizar o desempenho de filtro parametrizado com partições pré-computadas.

  • [ @publication_compatibility_level = ] backward_comp_level
    Indica a compatibilidade com versões anteriores da publicação. backward_comp_level é nvarchar(6), e pode ter um destes valores:

    Valor

    Versão

    90RTM

    SQL Server 2005

    100RTM

    SQL Server 2008

  • [ @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. 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. Para obter mais informações, consulte Fazer 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.

  • [ @allow_subscriber_initiated_snapshot = ] 'allow_subscriber_initiated_snapshot'
    Indica se os assinantes dessa publicação podem iniciar o processo de instantâneo para gerar o instantâneo filtrado para sua partição de dados. allow_subscriber_initiated_snapshot é nvarchar(5), com um padrão de FALSE. true indica que Assinantes podem iniciar o processo de instantâneo.

  • [ @allow_synctoalternate = ] 'allow_web_synchronization'
    Especifica se a publicação está habilitada para sincronização da Web. allow_web_synchronization é nvarchar(5), com um padrão de FALSE. true especifica que as assinaturas dessa publicação podem ser sincronizadas sobre HTTP. Para obter mais informações, consulte Sincronização da Web para replicação de mesclagem.. Para dar suporte a Assinantes SQL Server Compact, é necessário especificar true.

  • [ @web_synchronization_url= ] 'web_synchronization_url'
    Especifica o valor padrão da URL da Internet usado para sincronização da Web. web_synchronization_url i é nvarchar(500), com um padrão de NULL. Define a URL da Internet padrão, se uma URL não for definida explicitamente quando sp_addmergepullsubscription_agent for executado.

  • [ @allow_partition_realignment = ] 'allow_partition_realignment'
    Determina se exclusões serão enviadas para o Assinante quando modificação da linha no Publicador causar a mudança de sua partição. allow_partition_realignment é nvarchar(5), com um padrão TRUE. true envia exclusões para o Assinante para refletir os resultados de uma alteração de partição, removendo dados que não pertencem mais à partição do Assinante. false deixa os dados de uma partição antiga no Assinante, onde as alterações feitas a esses dados no Publicador não serão replicadas para esse Assinante, mas as alterações feitas no Assinante serão replicadas para o Publicador. A definição de allow_partition_realignment como false é usada para reter dados em uma assinatura de uma partição antiga, quando os dados precisam estar acessíveis para fins de histórico.

    ObservaçãoObservação

    Os dados que permanecem no Assinante como resultado da configuração de allow_partition_realignment como false devem ser tratados como somente leitura; no entanto, isso não é imposto pelo sistema de replicação.

  • [ @retention_period_unit = ] 'retention_period_unit'
    Especifica as unidades para o período de retenção definido por retention. retention_period_unit é nvarchar(10) e pode ser um dos valores a seguir.

    Valor

    Versão

    day (padrão)

    O período de retenção é especificado em dias.

    week

    O período de retenção é especificado em semanas.

    month

    O período de retenção é especificado em meses.

    year

    O período de retenção é especificado em anos.

  • [ @generation_leveling_threshold= ] generation_leveling_threshold
    Especifica o número de alterações contido em uma geração. Uma geração é uma coleção de alterações que é entregue a um Publicador ou Assinante. generation_leveling_threshold é int, com um valor padrão de 1000.

  • [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy
    Especifica se as alterações serão carregadas do Assinante antes de qualquer reinicialização automática exigida por uma alteração na publicação, onde um valor de 1 foi especificado para @force_reinit_subscription. automatic_reinitialization_policy é bit, com um valor padrão de 0. 1 significa que as alterações serão carregadas do Assinante antes que ocorra uma reinicialização automática.

    Observação importanteImportante

    Se você adicionar, descartar ou alterar um filtro com parâmetros, as alterações pendentes no Assinante não poderão ser carregadas no Publicador durante a reinicialização. Para carregar alterações pendentes, sincronize todas as assinaturas antes de alterar o filtro.

  • [ @conflict_logging = ] 'conflict_logging'
    Especifica onde são armazenados registros de conflito. conflict_logging é nvarchar(15), e pode ter um dos valores a seguir:

    Valor

    Descrição

    publisher

    Registros de conflito são armazenados no Publicador.

    subscriber

    Registros de conflito são armazenados no Assinante que provocou o conflito. Sem suporte para Assinantes SQL Server Compact.

    both

    Registros de conflito são armazenados no Publicador e no Assinante.

    NULL (padrão)

    A replicação define conflict_logging automaticamente como both quando o valor backward_comp_level for 90RTM e como publisher em todos os outros casos.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_addmergepublication é usado em replicação de mesclagem.

Para listar objetos de publicação no Active Directory por meio do parâmetro @add_to_active_directory, o objeto SQL Server já deverá ter sido criado no Active Directory.

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ão 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 cancelada.

Para Assinantes SQL Server Compact, o valor de alternate_snapshot_folder será usado apenas quando o valor de snapshot_in_default_folder for false.

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_changemergepublication (Transact-SQL) deve ser primeiro executado para definir replicate_ddl como 0. Depois que as instruções DDL de não replicação forem emitidas, sp_changemergepublication pode ser executado novamente para retroceder a replicação de DDL.

Exemplo

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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".

--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2012'; 
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @login = $(Login);
SET @password = $(Password);

-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption 
  @dbname=@publicationDB, 
  @optname=N'merge publish',
  @value = N'true' 

-- Create a new merge publication, explicitly setting the defaults. 
USE [AdventureWorks2012]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks2012.',
  @publication_compatibility_level  = N'120RTM';

-- Create a new snapshot job for the publication.
EXEC sp_addpublication_snapshot 
  @publication = @publication, 
  @job_login = @login, 
  @job_password = @password;
GO

Permissões

Apenas membros da função de servidor fixa sysadmin ou da função de banco de dados fixa db_owner podem executar sp_addmergepublication.

Consulte também

Referência

sp_changemergepublication (Transact-SQL)

sp_dropmergepublication (Transact-SQL)

sp_helpmergepublication (Transact-SQL)

Procedimentos armazenados de replicação (Transact-SQL)

Conceitos

Crie uma publicação

Publicar dados e objetos de banco de dados