sp_addmergepublication (Transact-SQL)

Crea una publicación de mezcla nueva. Este procedimiento almacenado se ejecuta en el publicador de la base de datos que se publica.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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'
    Es el nombre de la publicación de mezcla que se va a crear. publication es de tipo sysname, no tiene valor predeterminado y no debe ser la palabra clave ALL. El nombre de la publicación debe ser único en la base de datos.

  • [ @description = ] 'description'
    Es la descripción de la publicación. description es de tipo nvarchar(255) y su valor predeterminado es NULL.

  • [ @retention = ] retention
    Es el período de retención, en unidades de período de retención, durante el cual se guardarán los cambios del elemento publication especificado. retention es de tipo int y su valor predeterminado es 14 unidades. Las unidades del período de retención se definen en retention_period_unit. Si la suscripción no está sincronizada con el período de retención y los cambios pendientes que hubiera recibido se han quitado mediante una operación de limpieza en el distribuidor, la suscripción caduca y debe reinicializarse. El período de retención máximo permitido es el número de días comprendido entre el 31 de diciembre de 9999 y la fecha actual.

    [!NOTA]

    El período de retención para las publicaciones de mezcla tiene un plazo de gracia de 24 horas para adaptarse a los suscriptores de las diferentes zonas horarias. Si, por ejemplo, se establece un período de retención de un día, el período de retención real será de 48 horas.

  • [ @sync\_mode = ] 'sync_mode'
    Es el modo de sincronización inicial de los suscriptores a la publicación. sync_mode es de tipo nvarchar(10) y puede tener uno de los siguientes valores.

    Valor

    Descripción

    native (predeterminado)

    Genera la salida de todas las tablas mediante un programa de copia masiva en modo nativo.

    character

    Genera la salida de todas las tablas mediante un programa de copia masiva en modo de caracteres. Es necesario para admitir los suscriptores de MicrosoftSQL Server Compact 3.5 SP1 y los suscriptores que no son de SQL Server.

  • [ @allow\_push = ] 'allow_push'
    Especifica si es posible crear suscripciones de inserción en la publicación indicada. allow_push es de tipo nvarchar(5) y su valor predeterminado es TRUE, que permite suscripciones de inserción en la publicación.

  • [ @allow\_pull = ] 'allow_pull'
    Especifica si es posible crear suscripciones de extracción en la publicación indicada. allow_pull es de tipo nvarchar(5) y su valor predeterminado es TRUE, que permite suscripciones de extracción en la publicación. Debe especificarse True para que se admitan los suscriptores de SQL Server Compact 3.5 SP1.

  • [ @allow\_anonymous = ] 'allow_anonymous'
    Especifica si es posible crear suscripciones anónimas en la publicación indicada. allow_anonymous es de tipo nvarchar(5) y su valor predeterminado es TRUE, que permite las suscripciones anónimas en la publicación. Para admitir suscriptores de SQL Server Compact 3.5 SP1, es necesario especificar true.

  • [ @enabled\_for\_internet = ] 'enabled_for_internet'
    Especifica si la publicación está habilitada para Internet y determina si se puede utilizar el protocolo de transferencia de archivos (FTP) para transferir los archivos de instantánea a un suscriptor. enabled_for_internet es de tipo nvarchar(5) y su valor predeterminado es FALSE. Si es true, los archivos de sincronización de la publicación se colocan en el directorio C:\Archivos de programa\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp. El usuario debe crear el directorio Ftp. Si es false, la publicación no está habilitada para el acceso a Internet.

  • [ @centralized\_conflicts =] 'centralized_conflicts'
    Este parámetro ha quedado obsoleto y sólo se admite por compatibilidad con versiones anteriores de scripts. Use conflict_logging para especificar la ubicación donde se almacenan los registros de conflictos.

  • [ @dynamic\_filters =] 'dynamic_filters'
    Permite que la publicación de mezcla use filtros de fila con parámetros. dynamic_filters es de tipo nvarchar(5) y su valor predeterminado es FALSE.

    [!NOTA]

    No se recomienda especificar este parámetro; es mejor que SQL Server determine de forma automática si se están utilizando filtros de fila con parámetros. Si se especifica el valor true para dynamic_filters, debe definirse un filtro de fila con parámetros para el artículo. Para obtener más información, vea Cómo definir y modificar un filtro de fila con parámetros para un artículo de mezcla (programación de la replicación con Transact-SQL).

  • [ @snapshot\_in\_defaultfolder = ] 'snapshot_in_default_folder'
    Especifica si los archivos de instantánea se almacenan en la carpeta predeterminada. snapshot_in_default_folder es de tipo nvarchar(5) y su valor predeterminado es TRUE. Si el valor es true, los archivos de instantánea se encuentran en la carpeta predeterminada. Si el valor es false, los archivos de instantánea se almacenan en la ubicación alternativa especificada por alternate_snapshot_folder. Las ubicaciones alternativas pueden encontrarse en otro servidor, en una unidad de red o en medios extraíbles (como CD-ROM o discos extraíbles). También puede guardar los archivos de instantáneas en un sitio FTP (Protocolo de transferencia de archivos), para que el suscriptor los recupere más tarde. Observe que este parámetro puede ser True y aún así tener una ubicación especificada en alt_snapshot_folder. Esta combinación especifica que los archivos de instantáneas se almacenarán tanto en la ubicación predeterminada como en la alternativa.

  • [ @alt\_snapshot\_folder = ] 'alternate_snapshot_folder'
    Especifica la ubicación de la carpeta alternativa para la instantánea. alternate_snapshot_folder es de tipo nvarchar(255) y su valor predeterminado es NULL.

  • [ @pre\_snapshot\_script = ] 'pre_snapshot_script'
    Especifica un puntero a una ubicación de archivos .sql. pre_snapshot_script es de tipo nvarchar(255) y su valor predeterminado es NULL. El Agente de mezcla ejecutará la script previa a la instantánea antes que cualquiera de las scripts de objetos replicados al aplicar la instantánea en un suscriptor. La script se ejecuta en el contexto de seguridad utilizado por el Agente de mezcla durante la conexión con la base de datos de suscripciones. Los scripts previos a la instantánea no se ejecutan en los suscriptores de SQL Server Compact 3.5 SP1.

  • [ @post\_snapshot\_script = ] 'post_snapshot_script'
    Especifica un puntero a una ubicación de archivos .sql. post_snapshot_script es de tipo nvarchar(255) y su valor predeterminado es NULL. El Agente de mezcla ejecutará la script posterior a la instantánea después de que se apliquen las demás scripts y datos de objetos replicados durante una sincronización inicial. La script se ejecuta en el contexto de seguridad utilizado por el Agente de mezcla durante la conexión con la base de datos de suscripciones. Los scripts posteriores a la instantánea no se ejecutan en los suscriptores de SQL Server Compact 3.5 SP1.

  • [ @compress\_snapshot = ] 'compress_snapshot'
    Especifica que la instantánea escrita en la ubicación alt_snapshot_folder se va a comprimir con el formato CAB de Microsoft. compress_snapshot es de tipo nvarchar(5) y su valor predeterminado es FALSE. false especifica que la instantánea no se comprimirá; true especifica que se comprimirá. No se pueden comprimir archivos de instantáneas superiores a 2 GB. Los archivos de instantáneas comprimidos se descomprimen en la ubicación en la que se ejecuta el Agente de mezcla; normalmente, se utilizan suscripciones de extracción con las instantáneas comprimidas para descomprimir los archivos en el suscriptor. La instantánea de la carpeta predeterminada no se puede comprimir. Para admitir suscriptores de SQL Server Compact 3.5 SP1, es necesario especificar false.

  • [ @ftp\_address = ] 'ftp_address'
    Es la dirección de red del servicio FTP del distribuidor. ftp_address es de tipo sysname y su valor predeterminado es NULL. Especifica dónde se encuentran los archivos de instantánea de la publicación para que los recoja el Agente de mezcla de un suscriptor. Puesto que esta propiedad se almacena para cada publicación, cada publicación puede tener un parámetro ftp_address diferente. La publicación debe ser compatible con la propagación de instantáneas mediante FTP.

  • [ @ftp\_port**=** ] ftp_port
    Es el número de puerto del servicio FTP del distribuidor. ftp_port es de tipo int con un valor predeterminado de 21. Especifica dónde se encuentran los archivos de instantánea de la publicación para que los recoja el Agente de mezcla de un suscriptor. Puesto que esta propiedad se almacena para todas las publicaciones, cada publicación puede tener un valor de ftp_port propio.

  • [ @ftp\_subdirectory = ] 'ftp_subdirectory'
    Especifica dónde estarán disponibles los archivos de instantánea para que los recoja el Agente de mezcla del suscriptor si la publicación admite la propagación de instantáneas mediante FTP. ftp_subdirectory es de tipo nvarchar(255) y su valor predeterminado es NULL. Puesto que esta propiedad se almacena para todas las publicaciones, cada publicación puede tener su propio ftp_subdirctory o elegir no tener subdirectorio, indicándolo con un valor NULL.

    En la generación previa de instantáneas para publicaciones con filtros con parámetros, la instantánea de datos de cada partición del suscriptor debe estar en su propia carpeta. La estructura de directorios para las instantáneas generadas previamente mediante FTP debe ser la siguiente:

    alternate_snapshot_folder\ftp\publisher_publicationDB_publication\partitionID.

    [!NOTA]

    Los valores indicados en cursiva dependen de la configuración específica de la publicación y partición del suscriptor.

  • [ @ftp\_login = ] 'ftp_login'
    Es el nombre de usuario que se usa para conectarse al servicio FTP. ftp_login es de tipo sysname y su valor predeterminado es 'anonymous'.

  • [ @ftp\_password = ] 'ftp_password'
    Es la contraseña de usuario que se utiliza para conectarse al servicio FTP. ftp_password es de tipo sysname y su valor predeterminado es NULL.

    Nota de seguridadNota de seguridad

    No use una contraseña en blanco. Use una contraseña segura.

  • [ @conflict\_retention = ] conflict_retention
    Especifica el período de retención, expresado en días, durante el cual se retienen los conflictos. conflict_retention es de tipo int y su valor predeterminado es 14 días antes de que se purgue la fila que corresponde al conflicto en la tabla de conflictos.

  • [ @keep\_partition\_changes = ] 'keep_partition_changes'
    Especifica si se pueden habilitar las optimizaciones de los cambios en las particiones cuando no se pueden usar particiones precalculadas. keep_partition_changes es de tipo nvarchar(5) y su valor predeterminado es TRUE. false indica que los cambios de las particiones no se optimizan y que, cuando no se usan particiones precalculadas y se producen cambios en los datos de una partición, se comprueban las particiones enviadas a todos los suscriptores. true indica que se optimizan los cambios en las particiones y que sólo se verán afectados los suscriptores con filas en las particiones modificadas. Si usa particiones precalculadas, establezca use_partition_groups en true y keep_partition_changes en false. Para obtener más información, vea Optimizar el rendimiento de los filtros con parámetros con particiones precalculadas.

    [!NOTA]

    Si especifica un valor de true en keep_partition_changes, especifique un valor de 1 en el parámetro -MaxNetworkOptimization del Agente de instantáneas. Para obtener más información acerca de este parámetro, vea Agente de instantáneas de replicación. Para obtener información acerca de cómo especificar parámetros de agente, vea Administrar agentes de replicación.

  • [ @allow\_subscription\_copy = ] 'allow_subscription_copy'
    Habilita o deshabilita la funcionalidad de copia de las bases de datos de suscripciones que se suscriben a esta publicación. allow_subscription_copy es de tipo nvarchar(5) y su valor predeterminado es FALSE. El tamaño de la base de datos de suscripciones que se va a copiar debe ser inferior a 2 GB.

  • [ @allow\_synctoalternate = ] 'allow_synctoalternate'
    Solo se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

  • [ @validate\_subscriber\_info = ] 'validate_subscriber_info'
    Muestra las funciones que se usan para definir una partición de suscriptor de los datos publicados cuando se usan filtros de fila con parámetros. validate_subscriber_info es de tipo nvarchar(500) y su valor predeterminado es NULL. El Agente de mezcla utiliza esta información para validar la partición del suscriptor. Por ejemplo, si se utiliza SUSER_SNAME en el filtro de fila con parámetros, el parámetro debe ser @validate\_subscriber\_info=N'SUSER_SNAME()'.

    [!NOTA]

    No se recomienda especificar este parámetro; es mejor que SQL Server determine de forma automática el criterio de filtrado.

  • [ @add\_to\_active\_directory = ] 'add_to_active_directory'
    Este parámetro ha quedado obsoleto y sólo se admite por compatibilidad con versiones anteriores de scripts. Ya no se puede agregar información de publicación a Microsoft Active Directory.

  • [ @max\_concurrent\_merge = ] maximum_concurrent_merge
    El número máximo de procesos de mezcla simultáneos. maximum_concurrent_merge es de tipo int con un valor predeterminado de 0. El valor 0 en esta propiedad significa que no hay límite en el número de procesos de mezcla simultáneos que se ejecutan en un momento determinado. Esta propiedad establece un límite para el número de procesos de mezcla simultáneos que se pueden ejecutar con una publicación de mezcla en un momento determinado. Si hay más procesos de mezcla programados para ejecutarse simultáneamente de los que permite el valor de esta propiedad, los trabajos restantes se colocan en una cola hasta que finalice el proceso de mezcla que se está ejecutando en ese momento.

  • [ @max\_concurrent\_dynamic\_snapshots =] max_concurrent_dynamic_snapshots
    Número máximo de sesiones del Agente de instantáneas que se pueden ejecutar simultáneamente para generar instantáneas de datos filtrados en particiones del suscriptor. maximum_concurrent_dynamic_snapshots es de tipo int y su valor predeterminado es 0. Si el valor es 0, no hay ningún límite en el número de sesiones de instantánea. Si hay más procesos de instantánea programados al mismo tiempo que los que permite ejecutar el valor, los trabajos sobrantes se colocarán en una cola y esperarán hasta que finalice el proceso de instantánea que se está ejecutando actualmente.

  • [ @use\_partition\_groups = ] 'use_partition_groups'
    Especifica que se deben usar particiones precalculadas para optimizar el proceso de sincronización. use_partition_groups es de tipo nvarchar(5) y puede tener uno de los valores siguientes:

    Valor

    Descripción

    true

    La publicación utiliza particiones precalculadas.

    false

    La publicación no utiliza particiones precalculadas.

    NULL (predeterminado)

    El sistema decide la estrategia de partición.

    Las particiones precalculadas se utilizan de manera predeterminada. Para evitar el uso de particiones precalculadas, use_partition_groups se debe establecer en false. Si es NULL, el sistema decidirá si se pueden utilizar. Si no se pueden usar particiones precalculadas, este valor se convierte en false sin generar errores. En casos como éste, keep_partition_changes se puede establecer en true para proporcionar alguna optimización. Para obtener más información, vea Filtros de fila con parámetros y Optimizar el rendimiento de los filtros con parámetros con particiones precalculadas.

  • [ @publication\_compatibility\_level = ] backward_comp_level
    Indica la compatibilidad de la publicación con versiones anteriores. backward_comp_level es de tipo nvarchar(6) y puede tener uno de estos valores:

    Valor

    Versión

    70RTM

    MicrosoftSQL Server 7.0

    70SP1

    SQL Server 7.0 Service Pack 1

    70SP2

    SQL Server 7.0 Service Pack 2

    70SP3

    SQL Server 7.0 Service Pack 3

    70SP4

    SQL Server 7.0 Service Pack 4

    80RTM

    MicrosoftSQL Server 2000

    80SP1

    SQL Server 2000 Service Pack 1

    80SP2

    SQL Server 2000 Service Pack 2

    80SP3

    SQL Server 2000 Service Pack 3

    90RTM

    MicrosoftSQL Server 2005

    100RTM

    MicrosoftSQL Server 2008

  • [@replicate_ddl = ] replicate_ddl
    Indica si se admite la replicación de esquemas para la publicación. replicate_ddl es de tipo int y su valor predeterminado es 1. 1 indica que las instrucciones de lenguaje de definición de datos (DDL) ejecutadas en el publicador se replican; 0 indica que no se replican. Para obtener más información, vea Realizar cambios de esquema en las bases de datos de publicación.

  • [ @allow\_subscriber\_initiated\_snapshot = ] 'allow_subscriber_initiated_snapshot'
    Indica si los suscriptores a esta publicación pueden iniciar el proceso de instantáneas para generar la instantánea filtrada de su partición de datos. allow_subscriber_initiated_snapshot es de tipo nvarchar(5) y su valor predeterminado es FALSE. true indica que los suscriptores pueden iniciar el proceso de instantáneas.

  • [ @allow\_web\_synchronization = ] 'allow_web_synchronization'
    Especifica si la publicación está habilitada para la sincronización web. allow_web_synchronization es de tipo nvarchar(5) y su valor predeterminado es FALSE. true especifica que las suscripciones a esta publicación se pueden sincronizar a través de HTTPS. Para obtener más información, vea Sincronización Web para la replicación de mezcla. Para admitir suscriptores de SQL Server Compact 3.5 SP1, es necesario especificar true.

  • [ @web\_synchronization\_url = ] 'web_synchronization_url'
    Especifica el valor predeterminado de la dirección URL de Internet que se usa para la sincronización web. web_synchronization_url i es de tipo nvarchar(500) y su valor predeterminado es NULL. Define la dirección URL de Internet predeterminada si no se establece ninguna de manera explícita al ejecutar sp_addmergepullsubscription_agent.

  • [ @allow\_partition\_realignment = ] 'allow_partition_realignment'
    Determina si las eliminaciones se deben enviar al suscriptor cuando la modificación de la fila en el publicador hace que cambie su partición. allow_partition_realignment es de tipo nvarchar(5) y su valor predeterminado es TRUE. true envía las eliminaciones al suscriptor para reflejar los resultados de un cambio en la partición, quitando los datos que ya no son parte de la partición del suscriptor. false mantiene los datos de una partición antigua en el suscriptor; en este caso, los cambios realizados en dichos datos en el publicador no se replicarán al suscriptor, pero los cambios efectuados en el suscriptor se replicarán al publicador. El valor false en allow_partition_realignment sirve para conservar los datos de una partición antigua en una suscripción cuando es necesario tener acceso a ellos con fines históricos.

    [!NOTA]

    Los datos que permanecen en el suscriptor como resultado de establecer allow_partition_realignment en false deberían tratarse como si fueran de sólo lectura; no obstante, el sistema de replicación no aplica esta norma de forma estricta.

  • [ @retention\_period\_unit = ] 'retention_period_unit'
    Especifica las unidades del período de retención que establece retention. retention_period_unit es de tipo nvarchar(10) y puede tener uno de los valores siguientes.

    Valor

    Versión

    day (predeterminado)

    El período de retención se especifica en días.

    week

    El período de retención se especifica en semanas.

    month

    El período de retención se especifica en meses.

    year

    El período de retención se especifica en años.

  • [ @generation\_leveling\_threshold = ] generation_leveling_threshold
    Especifica el número de cambios contenidos en una generación. Una generación es una colección de cambios que se entregan a un publicador o a un suscriptor. generation_leveling_threshold es de tipo int, con un valor predeterminado de 1000. Para obtener más información, vea Cómo se realiza el seguimiento y la enumeración de los cambios en la réplica de mezcla.

  • [ @automatic\_reinitialization\_policy = ] automatic_reinitialization_policy
    Especifica si deben cargarse los cambios desde el suscriptor antes de que se produzca una reinicialización automática debido a un cambio en la publicación, en que se ha especificado 1 para @force_reinit_subscription. automatic_reinitialization_policy es de tipo bit y su valor predeterminado es 0. 1 indica que se cargan los cambios desde el suscriptor antes de que se produzca una reinicialización automática.

    Nota importanteImportante

    Si agrega, quita o cambia un filtro con parámetros, los cambios pendientes en el suscriptor no se pueden cargar en el publicador durante la reinicialización. Si desea cargar los cambios pendientes, sincronice todas las suscripciones antes de cambiar el filtro.

  • [ @conflict\_logging = ] 'conflict_logging'
    Especifica dónde se almacenan los registros de conflictos. conflict_logging es de tipo nvarchar(15) y puede tener uno de los valores siguientes:

    Valor

    Descripción

    publisher

    Los registros de conflictos se almacenan en el publicador.

    subscriber

    Los registros de conflictos se almacenan en el suscriptor que causó el conflicto. No se admite en suscriptores de SQL Server Compact 3.5 SP1.

    both

    Los registros de conflictos se almacenan en el publicador y en el suscriptor.

    NULL (predeterminado)

    La replicación establece automáticamente conflict_logging en both cuando el valor backward_comp_level es 90RTM y en publisher en todos los demás casos.

Valores de código de retorno

0 (correcto) o 1 (error)

Notas

sp_addmergepublication se utiliza en la replicación de mezcla.

Para enumerar los objetos de publicación en Active Directory mediante el parámetro @add\_to\_active\_directory, es preciso que el objeto de SQL Server se haya creado previamente en Active Directory.

Si existen varias publicaciones que publiquen el mismo objeto de base de datos, sólo las publicaciones con el valor 1 en el parámetro replicate_ddl replicarán las instrucciones ALTER TABLE, ALTER VIEW, ALTER PROCEDURE, ALTER FUNCTION y ALTER TRIGGER de DDL. Sin embargo, todas las publicaciones que publiquen la columna quitada replicarán una instrucción ALTER TABLE DROP COLUMN de DDL.

En suscriptores de SQL Server Compact 3.5 SP1, el valor de alternate_snapshot_folder sólo se usa si el valor de snapshot_in_default_folder es false.

Con la replicación DDL habilitada (replicate_ddl**=1**) para una publicación, para poder hacer cambios sin replicación DDL en la publicación, primero debe ejecutar sp_changemergepublication para establecer replicate_ddl en 0. Una vez que se hayan ejecutado las instrucciones de DDL sin replicación, se puede volver a ejecutar sp_changemergepublication para activar de nuevo la replicación DDL.

Ejemplo

-- 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'AdventureWorks'; 
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 [AdventureWorks]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks.',
  @publication_compatibility_level  = N'90RTM';

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

Permissions

Sólo los miembros de la función fija de servidor sysadmin o de la función fija de base de datos db_owner pueden ejecutar sp_addmergepublication.