Поделиться через


sp_addmergepublication (Transact-SQL)

Создает новую публикацию слиянием. Эта хранимая процедура выполняется на издателе в публикуемой базе данных.

Значок ссылки на разделСоглашение о синтаксисе в Transact-SQL

Синтаксис

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' ]

Аргументы

  • [ @publication = ] 'publication'
    Имя создаваемой публикации слиянием. Аргумент publication имеет тип sysname, не имеет значения по умолчанию и не может быть ключевым словом ALL. Имя публикации в пределах базы данных должно быть уникальным.

  • [ @description = ] 'description'
    Описание публикации. Аргумент description имеет тип nvarchar(255) и значение по умолчанию NULL.

  • [ @retention = ] retention
    Срок хранения (в единицах срока хранения), в течение которого должны храниться изменения в публикации, определяемой аргументом publication. Аргумент retention имеет тип int и значение по умолчанию 14 единиц. Единицы срока хранения определяются параметром retention_period_unit. Если подписка не синхронизована в пределах срока хранения, а ожидающие применения изменения, которые могли бы быть получены этой подпиской, удалены операцией очистки на распространителе, срок подписки истекает, и она должна быть вновь инициализирована. Максимально допустимым сроком хранения является количество дней от 31 декабря 9999 года до текущей даты.

    ПримечаниеПримечание

    Срок хранения для публикации слиянием предусматривает наличие 24-часового льготного срока для согласования работы подписчиков в разных часовых поясах. Например, если установить срок хранения продолжительностью в один день, то действительный срок хранения будет равен 48 часам.

  • [ @sync\_mode = ] 'sync_mode'
    Режим начальной синхронизации подписчиков на публикацию. Аргумент sync_mode имеет тип nvarchar(10) и может принимать одно из следующих значений.

    Значение

    Описание

    native (по умолчанию)

    Обеспечивает вывод программы массового копирования всех таблиц в ее собственном режиме.

    character

    Обеспечивает вывод программы массового копирования всех таблиц в символьном режиме. Необходим для поддержки подписчиков MicrosoftSQL Server Compact 3.5 с пакетом обновления 1 (SP1) и подписчиков, отличных от подписчиков SQL Server.

  • [ @allow\_push = ] 'allow_push'
    Указывает, можно ли создать принудительные подписки для конкретной публикации. Аргумент allow_push имеет тип nvarchar(5) и значение по умолчанию TRUE, разрешающее принудительные подписки.

  • [ @allow\_pull = ] 'allow_pull'
    Указывает, можно ли создать подписки по запросу для конкретной публикации. Аргумент allow_pull имеет тип nvarchar(5) и значение по умолчанию TRUE, разрешающее подписки по запросу. Для поддержки подписчиков SQL Server Compact 3.5 с пакетом обновления 1 (SP1) необходимо указать значение true.

  • [ @allow\_anonymous = ] 'allow_anonymous'
    Указывает, можно ли создать анонимные подписки для конкретной публикации. Аргумент allow_anonymous имеет тип nvarchar(5) и значение по умолчанию TRUE, разрешающее анонимные подписки. Чтобы системой поддерживались подписчики SQL Server Compact 3.5 с пакетом обновления 1 (SP1), необходимо задать true.

  • [ @enabled\_for\_internet = ] 'enabled_for_internet'
    Указывает, задействована ли публикация для работы в Интернете и можно ли использовать протокол FTP подписчику файлов моментальных снимков. Аргумент enabled_for_internet имеет тип nvarchar(5) и значение по умолчанию FALSE. Если значение равно true, файлы синхронизации для публикации помещаются в каталог "C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp". Пользователь должен создать каталог Ftp. При значении false доступ к публикации через Интернет отключен.

  • [ @centralized\_conflicts =] 'centralized_conflicts'
    Этот аргумент является устаревшим и поддерживается только для обратной совместимости. Для указания места хранения конфликтующих записей используйте аргумент conflict_logging.

  • [ @dynamic\_filters =] 'dynamic_filters'
    Разрешает использование параметризованных фильтров строк для публикаций слиянием. Аргумент dynamic_filters имеет тип nvarchar(5) и значение по умолчанию FALSE.

    ПримечаниеПримечание

    Вместо задания этого параметра следует позволить SQL Server автоматически определять, используются ли параметризованные фильтры строк. При задании значения true для аргумента dynamic_filters для статьи должен быть задан параметризованный фильтр строк. Дополнительные сведения см. в разделе Как определить и изменить параметризованный фильтр строк для статьи публикации слиянием (программирование репликации на языке Transact-SQL).

  • [ @snapshot\_in\_defaultfolder = ] 'snapshot_in_default_folder'
    Указывает, хранятся ли файлы моментальных снимков в папке по умолчанию. Аргумент snapshot_in_default_folder имеет тип nvarchar(5) и значение по умолчанию TRUE. Если значение равно true, файлы моментальных снимков находятся в папке по умолчанию. Если значение равно false, файлы моментальных снимков хранятся в другом расположении, заданном аргументом alternate_snapshot_folder. Альтернативное размещение может находиться на другом сервере, сетевом диске или съемном носителе (например, на CD-ROM или на съемных дисках). Файлы моментальных снимков могут также сохраняться с помощью протокола передачи файлов на FTP-узле, чтобы подписчик мог извлечь эти файлы позже. Обратите внимание, что этот аргумент может иметь значение true, и в то же время параметр alt_snapshot_folder может указывать место хранения файлов. Это сочетание указывает на то, что файлы моментальных снимков сохраняются одновременно и в месте по умолчанию, и в альтернативном месте.

  • [ @alt\_snapshot\_folder = ] 'alternate_snapshot_folder'
    Указывает местонахождение альтернативной папки для моментального снимка. Аргумент alternate_snapshot_folder имеет тип nvarchar(255) и значение по умолчанию NULL.

  • [ @pre\_snapshot\_script = ] 'pre_snapshot_script'
    Устанавливает указатель на расположение файлов с расширением SQL. Аргумент pre_snapshot_script имеет тип nvarchar(255) и значение по умолчанию NULL. При применении моментального снимка на подписчике агент слияния выполняет сценарий до моментального снимка перед выполнением сценариев объектов репликации. Сценарий выполняется в контексте безопасности, используемом агентом слияния при подключении к базе данных подписки. Сценарии до моментального снимка не выполняются на подписчиках SQL Server Compact 3.5 с пакетом обновления 1 (SP1).

  • [ @post\_snapshot\_script = ] 'post_snapshot_script'
    Устанавливает указатель на расположение файлов с расширением SQL. Аргумент post_snapshot_script имеет тип nvarchar(255) и значение по умолчанию NULL. Агент слияния выполняет сценарий после моментального снимка после того, как во время начальной синхронизации будут применены сценарии и данные всех других объектов репликации. Сценарий выполняется в контексте безопасности, используемом агентом слияния при подключении к базе данных подписки. Сценарии после моментального снимка не выполняются на подписчиках SQL Server Compact 3.5 с пакетом обновления 1 (SP1).

  • [ @compress\_snapshot = ] 'compress_snapshot'
    Указывает, что моментальный снимок, который записывается в расположение, указанное аргументом @alt\_snapshot\_folder, будет сжат в формате Microsoft CAB. Аргумент compress_snapshot имеет тип nvarchar(5) и значение FALSE по умолчанию. Значение false определяет, что моментальный снимок не сжимается, а значение true показывает, что моментальный снимок будет сжат. Файлы моментальных снимков, превышающие 2 ГБ, не могут быть сжаты. Сжатые файлы моментальных снимков распаковываются в том месте, в котором выполняется агент слияния; подписки по запросу обычно используются со сжатыми моментальными снимками, так что соответствующие файлы распаковываются на подписчике. Моментальный снимок в папке по умолчанию сжать нельзя. Чтобы системой поддерживались подписчики SQL Server Compact 3.5 с пакетом обновления 1 (SP1), необходимо задать false.

  • [ @ftp\_address = ] 'ftp_address'
    Сетевой адрес FTP-службы для распространителя. Аргумент ftp_address имеет тип sysname и значение по умолчанию NULL. Указывается расположение файлов моментальных снимков публикаций, откуда их выбирает агент слияния подписчика. Поскольку это свойство хранится для всех публикаций, каждая публикация может иметь разное значение аргумента ftp_address. Публикация должна поддерживать распространение моментальных снимков с помощью протокола FTP.

  • [ @ftp\_port**=** ] ftp_port
    Номер порта FTP-службы для распространителя. Аргумент ftp_port имеет тип int и значение по умолчанию 21. Указывает расположение файлов моментальных снимков публикации для агента слияния подписчика. Поскольку это свойство хранится для всех публикаций, каждая публикация может иметь собственное значение аргумента ftp_port.

  • [ @ftp\_subdirectory = ] 'ftp_subdirectory'
    Указывает расположение файлов моментальных снимков, доступных для агента слияния подписчика, если публикация поддерживает распространение моментальных снимков по протоколу FTP. Аргумент ftp_subdirectory имеет тип nvarchar(255) и значение по умолчанию NULL. Так как это свойство хранится для каждой публикации, каждая публикация может иметь собственное значение аргумента ftp_subdirctory или отказаться от использования подкаталога, указав значение NULL.

    При предварительном формировании моментальных снимков для публикаций при помощи параметризованных фильтров необходимо, чтобы моментальные снимки данных для каждой секции подписчика находились в своих папках. Структура каталога для предварительно формируемых при помощи FTP моментальных снимков должна иметь следующий вид:

    alternate_snapshot_folder\ftp\publisher_publicationDB_publication\partitionID.

    ПримечаниеПримечание

    Указанные выше значения, выделенные курсивом, зависят от характеристик публикации и секции подписчика.

  • [ @ftp\_login = ] 'ftp_login'
    Имя пользователя, которое используется для подключения к FTP-службе. Аргумент ftp_login имеет тип sysname и значение по умолчанию «anonymous».

  • [ @ftp\_password = ] 'ftp_password'
    Пароль пользователя, который используется для подключения к FTP-службе. Аргумент ftp_password имеет тип sysname и значение по умолчанию NULL.

    Примечание по безопасностиПримечание по безопасности

    Не используйте пустые пароли. Выбирайте надежные пароли.

  • [ @conflict\_retention = ] conflict_retention
    Указывается срок хранения (в днях), в течение которого сохраняются данные конфликта. Аргумент conflict_retention имеет тип int и значение по умолчанию 14 дней, по истечении которых строка данных конфликта удаляется из таблицы конфликтов.

  • [ @keep\_partition\_changes = ] 'keep_partition_changes'
    Указывает, нужно ли включать оптимизацию изменений секций, если предварительно вычисляемые секции не могут быть использованы. Аргумент keep_partition_changes имеет тип nvarchar(5) и значение по умолчанию TRUE. Значение false означает, что изменения секций не оптимизируются, и если предварительно вычисляемые секции не используются, секции, посылаемые всем подписчикам, проверяются при изменении данных в секции. Значение true означает, что изменения секций оптимизируются; при этом оптимизация проводится только для подписчиков, имеющих строки в изменяемых секциях. При использовании предварительно вычисляемых секций присвойте аргументу use_partition_groups значение true, а аргументу keep_partition_changes — значение false. Дополнительные сведения см. в разделе Оптимизация производительности параметризованного фильтра с помощью предварительно вычисляемых секций.

    ПримечаниеПримечание

    Если параметру keep_partition_changes присвоено значение true, то параметру агента моментальных снимков -MaxNetworkOptimization следует задать значение 1. Дополнительные сведения об этом параметре см. в разделе Агент моментальных снимков репликации. Дополнительные сведения об указании параметров агента см. в разделе Управление агентами репликации.

  • [ @allow\_subscription\_copy = ] 'allow_subscription_copy'
    Включает или отключает возможность копирования баз данных подписки, которые подписаны на эту публикацию. Аргумент allow_subscription_copy имеет тип nvarchar(5) и значение по умолчанию FALSE. Размер копируемой базы данных подписки должен быть меньше 2 ГБ.

  • [ @allow\_synctoalternate = ] 'allow_synctoalternate'
    Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

  • [ @validate\_subscriber\_info = ] 'validate_subscriber_info'
    Перечисляются функции, используемые для определения секции подписчика в опубликованных данных при использовании параметризованных фильтров строк. Аргумент validate_subscriber_info имеет тип nvarchar(500) и значение по умолчанию NULL. Эти данные используются агентом слияния для проверки секций подписчиков. Например, если в параметризованном фильтре строк применяется SUSER_SNAME, должен использоваться параметр @validate\_subscriber\_info=N'SUSER_SNAME()'.

    ПримечаниеПримечание

    Вместо задания этого аргумента позвольте SQL Server автоматически определять критерий фильтрации.

  • [ @add\_to\_active\_directory = ] 'add_to_active_directory'
    Этот аргумент является устаревшим и поддерживается только для обратной совместимости. Больше нельзя добавлять данные публикации в службу Microsoft Active Directory.

  • [ @max\_concurrent\_merge = ] maximum_concurrent_merge
    Максимальное число одновременно выполняющихся процессов слияния. Аргумент maximum_concurrent_merge имеет тип int и значение по умолчанию 0. Значение 0 для этого свойства означает, что ограничения на количество процессов слияния, одновременно выполняющихся в любой момент времени, отсутствуют. Это свойство устанавливает предельное значение числа процессов слияния, которые могут одновременно выполняться на публикации слиянием. Если в расписании задано одновременное выполнение большего числа процессов слияния, чем указанное значение, лишние задания будут поставлены в очередь, где они будут ожидать завершения одного из одновременно выполняющихся процессов слияния.

  • [ @max\_concurrent\_dynamic\_snapshots =] max_concurrent_dynamic_snapshots
    Максимальное количество сеансов агентов моментальных снимков, которые могут одновременно выполняться для формирования моментальных снимков отфильтрованных данных для секций подписчиков. Аргумент maximum_concurrent_dynamic_snapshots имеет тип int и значение по умолчанию 0. При значении 0 ограничения на количество сеансов моментальных снимков отсутствуют. Если на одно и то же время назначено больше процессов моментальных снимков, чем позволяет указанное значение, лишние задачи будут помещены в очередь до завершения создания текущего моментального снимка.

  • [ @use\_partition\_groups = ] 'use_partition_groups'
    Указывает, что для оптимизации процесса синхронизации должны использоваться предварительно вычисляемые секции. Аргумент use_partition_groups имеет тип nvarchar(5) и может принимать одно из следующих значений.

    Значение

    Описание

    true

    Публикация использует предварительно вычисляемые секции.

    false

    Публикация не использует предварительно вычисляемые секции.

    NULL (по умолчанию)

    Стратегию секционирования выбирает система.

    По умолчанию используются предварительно вычисляемые секции. Чтобы избежать использования предварительно вычисляемых секций, аргумент use_partition_groups должен иметь значение false. При задании NULL система решает, могут ли использоваться предварительно вычисляемые секции. Если предварительно вычисляемые секции нельзя использовать, это аргумент приобретает значение false, не формируя ошибку. В таких случаях для обеспечения некоторой оптимизации аргументу keep_partition_changes можно задать значение true. Дополнительные сведения см. в разделах Параметризованные фильтры строк и Оптимизация производительности параметризованного фильтра с помощью предварительно вычисляемых секций.

  • [ @publication\_compatibility\_level = ] backward_comp_level
    Указывает обратную совместимость публикации. Аргумент backward_comp_level имеет тип nvarchar(6) и может принимать одно из следующих значений.

    Значение

    Версия

    70RTM

    MicrosoftSQL Server 7.0

    70SP1

    SQL Server 7.0 с пакетом обновления 1 (SP1).

    70SP2

    SQL Server 7.0 с пакетом обновления 2 (SP2).

    70SP3

    SQL Server 7.0 с пакетом обновления 3 (SP3).

    70SP4

    SQL Server 7.0 с пакетом обновления 4 (SP4).

    80RTM

    MicrosoftSQL Server 2000

    80SP1

    SQL Server 2000 с пакетом обновления 1 (SP1).

    80SP2

    SQL Server 2000 с пакетом обновления 2 (SP1)

    80SP3

    SQL Server 2000 с пакетом обновления 3 (SP3).

    90RTM

    MicrosoftSQL Server 2005

    100RTM

    MicrosoftSQL Server 2008

  • [@replicate_ddl = ] replicate_ddl
    Определяет, будет ли в публикации поддерживаться репликация схемы. Аргумент replicate_ddl имеет тип int и значение по умолчанию 1. Значение 1 указывает, что инструкции языка описания данных (DDL), выполняемые на издателе, реплицируются, а значение 0 указывает на то, что инструкции DDL не реплицируются. Дополнительные сведения см. в разделе Внесение изменений схем в базы данных публикаций.

  • [ @allow\_subscriber\_initiated\_snapshot = ] 'allow_subscriber_initiated_snapshot'
    Указывается, могут ли подписчики на данную публикацию инициировать процесс создания моментального снимка для создания отфильтрованного моментального снимка своих секций данных. Аргумент allow_subscriber_initiated_snapshot имеет тип nvarchar(5) и значение по умолчанию FALSE. Значение true означает, что подписчики могут инициировать процесс создания моментального снимка.

  • [ @allow\_web\_synchronization = ] 'allow_web_synchronization'
    Определяет, задействована ли публикация для веб-синхронизации. Аргумент allow_web_synchronization имеет тип nvarchar(5) и значение по умолчанию FALSE. Значение true означает, что подписки на эту публикацию могут синхронизироваться по протоколу HTTPS. Дополнительные сведения см. в разделе Веб-синхронизация для репликации слиянием. Чтобы системой поддерживались подписчики SQL Server Compact 3.5 с пакетом обновления 1 (SP1), необходимо задать true.

  • [ @web\_synchronization\_url = ] 'web_synchronization_url'
    Указывает значение по умолчанию URL-адреса в Интернете, используемого для веб-синхронизации. Аргумент web_synchronization_url i имеет тип nvarchar(500) и значение по умолчанию NULL. Определяет URL-адрес по умолчанию, если этот адрес не задан явно при выполнении sp_addmergepullsubscription_agent.

  • [ @allow\_partition\_realignment = ] 'allow_partition_realignment'
    Определяет, посылаются ли операции удаления подписчику, если в результате изменения строки на издателе изменяется его секция. Аргумент allow_partition_realignment имеет тип nvarchar(5) и значение по умолчанию TRUE. Если значение равно true, производится пересылка операций удаления подписчику для обозначения результатов изменения секции при удалении данных, которые уже не являются частью секции подписчика. Если значение равно false, данные из старой секции остаются на подписчике, если изменения этих данных на издателе не будут реплицироваться на этот подписчик, но изменения, выполненные на подписчике, будут реплицироваться на издатель. Присвоение аргументу allow_partition_realignment значения false используется для сохранения в подписке данных из старой секции с целью обеспечения доступа к архивным данным.

    ПримечаниеПримечание

    Данные, сохраняющиеся на подписчике в результате установки аргумента allow_partition_realignment в значение false, должны рассматриваться, как если бы они были доступны только для чтения; однако система репликации принудительно это не устанавливает.

  • [ @retention\_period\_unit = ] 'retention_period_unit'
    Указывает единицы срока хранения, установленного аргументом retention. Аргумент retention_period_unit имеет тип nvarchar(10) и может принимать одно из следующих значений.

    Значение

    Версия

    day (по умолчанию)

    Срок хранения указан в днях.

    week

    Срок хранения указан в неделях.

    month

    Срок хранения указан в месяцах.

    year

    Срок хранения указан в годах.

  • [ @generation\_leveling\_threshold = ] generation_leveling_threshold
    Задает число изменений, которые содержатся в поколении. Поколение — это набор изменений, переданных издателю или подписчику. Параметр generation_leveling_threshold имеет тип int и значение по умолчанию 1000. Дополнительные сведения см. в разделе Как репликация слиянием отслеживает и перечисляет изменения.

  • [ @automatic\_reinitialization\_policy = ] automatic_reinitialization_policy
    Указывает, передаются ли изменения с подписчика перед автоматической повторной инициализацией, необходимой при изменении в публикации, при задании значения 1 для аргумента @force_reinit_subscription. Аргумент automatic_reinitialization_policy имеет тип bit и значение по умолчанию 0. Значение 1 означает, что перед автоматической повторной инициализацией изменения с подписчика передаются.

    Важное примечаниеВажно!

    Если добавить, удалить или изменить параметризованный фильтр, то ожидающие обработки изменения на подписчике нельзя будет передать на издатель во время повторной инициализации. Если нужно передать изменения, ожидающие обработки, то перед изменением фильтра необходимо синхронизировать все подписки.

  • [ @conflict\_logging = ] 'conflict_logging'
    Определяет место хранения данных конфликта. Аргумент conflict_logging имеет тип nvarchar(15) и может принимать одно из следующих значений.

    Значение

    Описание

    publisher

    Конфликтующие записи сохраняются на издателе.

    subscriber

    Конфликтующие записи хранятся на подписчике, вызвавшем конфликт. Не поддерживается подписчиками SQL Server Compact 3.5 с пакетом обновления 1 (SP1).

    both

    Конфликтующие записи сохраняются одновременно и на издателе, и на подписчике.

    NULL (по умолчанию)

    Репликация автоматически устанавливает аргумент conflict_logging в значение both, если аргумент backward_comp_level имеет значение 90RTM, и в значение publisher во всех остальных случаях.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

Процедура sp_addmergepublication используется в репликации слиянием.

Для получения списка объектов публикации в Active Directory при помощи параметра @add\_to\_active\_directory объект сервера SQL Server уже должен быть создан в Active Directory.

Если несколько существующих публикаций публикуют одинаковый объект базы данных, только публикации с параметром replicate_ddl, имеющим значение 1, будут реплицировать инструкции ALTER TABLE, ALTER VIEW, ALTER PROCEDURE, ALTER FUNCTION и ALTER TRIGGER DDL. Однако инструкция ALTER TABLE DROP COLUMN DDL будет реплицирована всеми публикациями, публикующими удаленный столбец.

Для подписчиков SQL Server Compact 3.5 с пакетом обновления 1 (SP1) значение alternate_snapshot_folder используется, только если значением snapshot_in_default_folder является false.

Если для публикации включена репликация DDL (replicate_ddl**=1**), то, чтобы внести в публикацию изменения DDL, не участвующие в репликации, сначала необходимо выполнить процедуру sp_changemergepublication, устанавливающую параметр replicate_ddl в значение 0. После выполнения нереплицируемых инструкций DDL можно снова запустить процедуру sp_changemergepublication для повторного включения репликации DDL.

Пример

-- 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

Разрешения

Только члены предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner могут выполнять процедуруsp_addmergepublication.