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


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

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

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

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

  • [@allow_anonymous =] 'allow_anonymous'
    Указывает, можно ли создать анонимные подписки для конкретной публикации. Аргумент allow_anonymous имеет тип nvarchar(5) и значение по умолчанию TRUE, разрешающее анонимные подписки на публикацию. Чтобы системой поддерживались подписчики SQL Server Compact, необходимо задать 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 для статьи должен быть задан параметризованный фильтр строк. Дополнительные сведения см. в разделе Определение и изменение параметризованного фильтра строк для статьи публикации слиянием.

  • [@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.

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

  • [@compress_snapshot =] 'compress_snapshot'
    Указывает необходимость сжатия моментального снимка, записываемого в папку @alt_snapshot_folder, в формат Microsoft САВ. Аргумент compress_snapshot имеет тип nvarchar(5) и значение по умолчанию FALSE. Значение false определяет, что моментальный снимок не будет сжиматься, а значение true указывает, что моментальный снимок будет сжат. Файлы моментальных снимков, превышающие 2 ГБ, не могут быть сжаты. Сжатые файлы моментальных снимков распаковываются в том месте, в котором выполняется агент слияния; подписки по запросу обычно используются со сжатыми моментальными снимками, так что соответствующие файлы распаковываются на подписчике. Моментальный снимок в папке по умолчанию сжать нельзя. Чтобы системой поддерживались подписчики SQL Server Compact, необходимо задать 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. Дополнительные сведения об этом параметре см. в разделе Агент моментальных снимков репликации. Дополнительные сведения об указании параметров агента см. в разделе Администрирование агента репликации.

    При работе с подписчиками SQL Server Compact параметр keep_partition_changes необходимо установить в значение true, чтобы обеспечить правильное распределение удалений. При установке значения false подписчик может получить больше строк, чем ожидается.

  • [ @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) и может принимать одно из следующих значений:

    Значение

    Версия

    90RTM

    SQL Server 2005

    100RTM

    SQL Server 2008

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

    Параметр @replicate\_ddl учитывается, когда инструкция DDL добавляет столбец. Параметр @replicate\_ddl игнорируется, когда инструкция DDL изменяет или удаляет столбец, по следующим причинам.

    • При удалении столбца столбцы sysarticlecolumns должны обновляться, чтобы новые инструкции DML не включали удаленный столбец, из-за чего работа агента распространителя завершилась бы ошибкой. Параметр @replicate\_ddl игнорируется, потому что репликация всегда должна реплицировать изменения схемы.

    • Когда в столбец вносится изменение, исходный тип данных или возможность допустимости значения NULL может измениться, в результате чего инструкции DML будут содержать значение, которое может быть несовместимым с таблицей на подписчике. Такие инструкции DML могут привести к тому, что работа агента распространителя завершится ошибкой. Параметр @replicate\_ddl игнорируется, потому что репликация всегда должна реплицировать изменения схемы.

    • Когда инструкция DDL добавляет новый столбец, в столбцах sysarticlecolumns этого нового столбца нет. Инструкции DML не будут пытаться реплицировать данные для этого нового столбца. Этот параметр учитывается потому, что допустимо как выполнение, так и не выполнение репликации 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, необходимо задать 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.

    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 значение alternate_snapshot_folder используется, только если значением snapshot_in_default_folder является false.

Чтобы в публикации произвести изменения, не относящиеся к репликации, с включенной репликацией DDL (replicate_ddl = 1) для публикации, вначале должна быть выполнена хранимая процедура sp_changemergepublication (Transact-SQL) для присвоения аргументу 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'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

Разрешения

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

См. также

Справочник

sp_changemergepublication (Transact-SQL)

sp_dropmergepublication (Transact-SQL)

sp_helpmergepublication (Transact-SQL)

Хранимые процедуры репликации (Transact-SQL)

Основные понятия

Создание публикации

Публикация данных и объектов базы данных