sp_addmergepublication (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Создает новую публикацию слиянием. Эта хранимая процедура выполняется на издателе в публикуемой базе данных.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_addmergepublication
[ @publication = ] N'publication'
[ , [ @description = ] N'description' ]
[ , [ @retention = ] retention ]
[ , [ @sync_mode = ] N'sync_mode' ]
[ , [ @allow_push = ] N'allow_push' ]
[ , [ @allow_pull = ] N'allow_pull' ]
[ , [ @allow_anonymous = ] N'allow_anonymous' ]
[ , [ @enabled_for_internet = ] N'enabled_for_internet' ]
[ , [ @centralized_conflicts = ] N'centralized_conflicts' ]
[ , [ @dynamic_filters = ] N'dynamic_filters' ]
[ , [ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder' ]
[ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
[ , [ @pre_snapshot_script = ] N'pre_snapshot_script' ]
[ , [ @post_snapshot_script = ] N'post_snapshot_script' ]
[ , [ @compress_snapshot = ] N'compress_snapshot' ]
[ , [ @ftp_address = ] N'ftp_address' ]
[ , [ @ftp_port = ] ftp_port ]
[ , [ @ftp_subdirectory = ] N'ftp_subdirectory' ]
[ , [ @ftp_login = ] N'ftp_login' ]
[ , [ @ftp_password = ] N'ftp_password' ]
[ , [ @conflict_retention = ] conflict_retention ]
[ , [ @keep_partition_changes = ] N'keep_partition_changes' ]
[ , [ @allow_subscription_copy = ] N'allow_subscription_copy' ]
[ , [ @allow_synctoalternate = ] N'allow_synctoalternate' ]
[ , [ @validate_subscriber_info = ] N'validate_subscriber_info' ]
[ , [ @add_to_active_directory = ] N'add_to_active_directory' ]
[ , [ @max_concurrent_merge = ] max_concurrent_merge ]
[ , [ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots ]
[ , [ @use_partition_groups = ] N'use_partition_groups' ]
[ , [ @publication_compatibility_level = ] N'publication_compatibility_level' ]
[ , [ @replicate_ddl = ] replicate_ddl ]
[ , [ @allow_subscriber_initiated_snapshot = ] N'allow_subscriber_initiated_snapshot' ]
[ , [ @allow_web_synchronization = ] N'allow_web_synchronization' ]
[ , [ @web_synchronization_url = ] N'web_synchronization_url' ]
[ , [ @allow_partition_realignment = ] N'allow_partition_realignment' ]
[ , [ @retention_period_unit = ] N'retention_period_unit' ]
[ , [ @generation_leveling_threshold = ] generation_leveling_threshold ]
[ , [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy ]
[ , [ @conflict_logging = ] N'conflict_logging' ]
[ ; ]
Аргументы
[ @publication = ] N'publication'
Имя создаваемой публикации слияния. @publication является sysname, без значения по умолчанию и не должен быть ключевым словомALL
. Имя публикации в пределах базы данных должно быть уникальным.
[ @description = ] N'description'
Описание публикации. @description имеет значение nvarchar(255) с значением по умолчаниюNULL
.
[ @retention = ] хранение
Период хранения в единицах хранения, для которых необходимо сохранить изменения для заданного @publication. @retention имеет значение int с значением по умолчанию14
. Единицы периода хранения определяются @retention_period_unit. Если подписка не синхронизирована в течение срока хранения, и ожидающие изменения, полученные им, удаляются операцией очистки на распространителе, срок действия подписки истекает и должен быть повторно инициализирован. Максимальный допустимый срок хранения равен числу дней между 31 декабря 9999 года и текущей датой.
Примечание.
Срок хранения для публикаций слиянием содержит 24-часовой льготный период для размещения подписчиков в разных часовых поясах. Например, если установить срок хранения продолжительностью в один день, то действительный срок хранения будет равен 48 часам.
[ @sync_mode = ] N'sync_mode'
Режим начальной синхронизации подписчиков с публикацией. @sync_mode — nvarchar(10) и может быть одним из следующих значений.
значение | Описание |
---|---|
native (по умолчанию) |
Производит выходные данные программы массового копирования всех таблиц. |
character |
Производит выходные данные программы массового копирования всех таблиц в символьном режиме. Требуется для поддержки подписчиков SQL Server Compact и не SQL Server. |
[ @allow_push = ] N'allow_push'
Указывает, можно ли создать принудительные подписки для конкретной публикации. @allow_push — nvarchar(5), с значением по умолчанию, что позволяет отправлять подписки на публикациюtrue
.
[ @allow_pull = ] N'allow_pull'
Указывает, можно ли создать подписки по запросу для конкретной публикации. @allow_pull — nvarchar(5), с значением по умолчанию, что позволяет извлекать подписки на публикациюtrue
. Необходимо указать значение true для поддержки подписчиков SQL Server Compact.
[ @allow_anonymous = ] N'allow_anonymous'
Указывает, можно ли создать анонимные подписки для конкретной публикации. @allow_anonymous — nvarchar(5) с значением по умолчаниюtrue
, что позволяет анонимным подпискам на публикацию. Для поддержки подписчиков SQL Server Compact необходимо указать true
.
[ @enabled_for_internet = ] N'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 = ] N'centralized_conflicts'
Этот параметр устарел и поддерживается для обратной совместимости скриптов. Используйте @conflict_logging , чтобы указать расположение, в котором хранятся записи конфликтов.
[ @dynamic_filters = ] N'dynamic_filters'
Разрешает использование параметризованных фильтров строк для публикации слиянием. @dynamic_filters — nvarchar(5) с значением по умолчаниюfalse
.
Примечание.
Этот параметр не следует указывать, но вместо этого разрешить SQL Server автоматически определять, используются ли параметризованные фильтры строк. Если указать значение true
для @dynamic_filters, необходимо определить параметризованный фильтр строк для статьи. Дополнительные сведения см. в статье Определение и изменение параметризованного фильтра строк для статьи публикации слиянием.
[ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder'
Указывает, хранятся ли файлы моментальных снимков в папке по умолчанию. @snapshot_in_defaultfolder — nvarchar(5) с значением по умолчаниюtrue
. Если true
файлы моментальных снимков можно найти в папке по умолчанию. Если false
файлы моментальных снимков хранятся в альтернативном расположении, указанном @alternate_snapshot_folder. Альтернативные расположения могут находиться на другом сервере, на сетевом диске или на съемных носителях (например, съемных дисках). Файлы моментальных снимков могут также сохраняться с помощью протокола передачи файлов на FTP-сайте, чтобы подписчик мог извлечь эти файлы позже. Этот параметр может иметь значение true и по-прежнему иметь расположение, указанное @alt_snapshot_folder. Это сочетание указывает, что файлы моментальных снимков хранятся как в стандартных, так и в альтернативных расположениях.
[ @alt_snapshot_folder = ] N'alt_snapshot_folder'
Указывает местоположение альтернативной папки для моментального снимка. @alt_snapshot_folder — nvarchar(255) с значением по умолчаниюNULL
.
[ @pre_snapshot_script = ] N'pre_snapshot_script'
Указывает указатель на .sql
расположение файла. @pre_snapshot_script — nvarchar(255) с значением по умолчаниюNULL
. Агент слияния запускает скрипт предварительного моментального снимка перед любым из реплицированных скриптов объектов при применении моментального снимка на подписчике. Скрипт выполняется в контексте безопасности, используемом агентом слияния при подключении к базе данных подписки. Скрипты предварительного моментального снимка не выполняются в подписчиках SQL Server Compact.
[ @post_snapshot_script = ] N'post_snapshot_script'
Указывает указатель на .sql
расположение файла. @post_snapshot_script — nvarchar(255) с значением по умолчаниюNULL
. Агент слияния выполняет скрипт после моментального снимка после того, как во время начальной синхронизации будут применены скрипты и данные всех других объектов репликации. Скрипт выполняется в контексте безопасности, используемом агентом слияния при подключении к базе данных подписки. Скрипты моментальных снимков после создания моментальных снимков не выполняются в подписчиках SQL Server Compact.
[ @compress_snapshot = ] N'compress_snapshot'
Указывает, что моментальный снимок, записанный в расположение @alt_snapshot_folder , будет сжиматься в формате CAB Майкрософт. @compress_snapshot — nvarchar(5) с значением по умолчаниюfalse
.
false
указывает, что моментальный снимок не сжимается.true
указывает, что моментальный снимок будет сжатым.
Файлы моментальных снимков размером более 2 ГБ не могут быть сжаты. Сжатые файлы моментальных снимков распаковываются в том месте, в котором выполняется агент слияния; подписки по запросу обычно используются со сжатыми моментальными снимками, так что соответствующие файлы распаковываются на подписчике. Моментальный снимок в папке по умолчанию не может быть сжатым. Для поддержки подписчиков SQL Server Compact необходимо указать false
.
[ @ftp_address = ] N'ftp_address'
Сетевой адрес службы FTP для распространителя. @ftp_address — sysname с значением по умолчаниюNULL
. Указывается расположение файлов моментальных снимков публикаций, откуда их выбирает агент слияния подписчика. Так как это свойство хранится для каждой публикации, каждая публикация может иметь разные @ftp_address. Публикация должна поддерживать распространение моментальных снимков с помощью протокола FTP.
[ @ftp_port = ] ftp_port
Номер порта службы FTP для распространителя. @ftp_port имеет значение int с значением по умолчанию21
. Указывается расположение файлов моментальных снимков публикаций, откуда их выбирает агент слияния подписчика. Так как это свойство хранится для каждой публикации, каждая публикация может иметь собственные @ftp_port.
[ @ftp_subdirectory = ] N'ftp_subdirectory'
Указывает, где файлы моментальных снимков доступны для агент слияния подписчика, чтобы забрать, если публикация поддерживает распространение моментальных снимков с помощью FTP. @ftp_subdirectory — nvarchar(255) с значением по умолчаниюftp
. Так как это свойство хранится для каждой публикации, каждая публикация может иметь собственные @ftp_subdirctory или не иметь подкаталога, указанного со значением NULL
.
При предварительном формировании моментальных снимков для публикаций при помощи параметризованных фильтров необходимо, чтобы моментальные снимки данных для каждой секции подписчика находились в своих папках. Структура каталога для предварительно формируемых при помощи FTP моментальных снимков должна иметь следующий вид:
<alternate_snapshot_folder>\ftp\<publisher_publicationDB_publication>\<partitionID>
.
Примечание.
Значения в предыдущем примере (в угловых скобках) зависят от специфики публикации и секции подписчика.
[ @ftp_login = ] N'ftp_login'
Имя пользователя для подключения к службе FTP. @ftp_login — sysname с значением по умолчаниюanonymous
.
[ @ftp_password = ] N'ftp_password'
Пароль пользователя для подключения к службе FTP. @ftp_password — sysname с значением по умолчаниюNULL
.
Внимание
Не используйте пустой пароль. Используйте надежный пароль.
[ @conflict_retention = ] conflict_retention
Указывает срок хранения конфликтных записей (в сутках). @conflict_retention является int, с значением по умолчанию 14
до очистки строки конфликта из таблицы конфликтов.
[ @keep_partition_changes = ] N'keep_partition_changes'
Указывает, следует ли включить оптимизацию изменений секций при неисполненной компиляции секций. @keep_partition_changes — nvarchar(5) с значением по умолчаниюtrue
.
false
означает, что изменения секций не оптимизированы, а при предварительной компиляции секций не используются, секции, отправленные всем подписчикам, проверяются при изменении данных в секции.true
означает, что изменения секции оптимизированы, и затрагиваются только подписчики, имеющие строки в измененных секциях.
При использовании предварительно вычисляемых секций задайте для @use_partition_groups true
значение и задайте для @keep_partition_changes значение false
. Дополнительные сведения см. в разделе "Параметризованные фильтры" — оптимизация для предварительно подготовленных секций.
Примечание.
Если указать значение true
для @keep_partition_changes, укажите значение 1
параметра агент моментальных снимков-MaxNetworkOptimization
. Дополнительные сведения об этом параметре см. в агент моментальных снимков репликации. Сведения об указании параметров агента см. в разделе "Администрирование агента репликации".
При использовании подписчиков SQL Server Compact необходимо задать @keep_partition_changes , чтобы true
обеспечить правильное распространение удаленных данных. Если задано значение false
, подписчик может иметь больше строк, чем ожидалось.
[ @allow_subscription_copy = ] N'allow_subscription_copy'
Разрешает или запрещает возможность копирования баз данных подписки, подписанных на эту публикацию. @allow_subscription_copy — nvarchar(5) с значением по умолчаниюfalse
. Размер копируемых баз данных подписки должен быть меньше 2 ГБ.
[ @allow_synctoalternate = ] N'allow_synctoalternate'
Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
[ @validate_subscriber_info = ] N'validate_subscriber_info'
Перечисляет функции, которые применяются для определения секции подписчика опубликованных данных, при использовании параметризованных фильтров строк. @validate_subscriber_info — nvarchar(500) с значением по умолчаниюNULL
. Эти данные используются агентом слияния для проверки секций подписчиков. Например, если SUSER_SNAME используется в параметризованном фильтре строк, параметр должен быть @validate_subscriber_info=N'SUSER_SNAME()
.
Примечание.
Этот параметр не следует указывать, но вместо этого разрешить SQL Server автоматически определять критерий фильтрации.
[ @add_to_active_directory = ] N'add_to_active_directory'
Этот параметр устарел и поддерживается для обратной совместимости скриптов. Вы больше не можете добавлять сведения о публикации в Microsoft Active Directory.
[ @max_concurrent_merge = ] max_concurrent_merge
Максимальное число одновременно выполняющихся процессов слияния. @max_concurrent_merge имеет значение int с значением по умолчанию0
. Значение 0
для означает, что количество параллельных процессов слияния, выполняемых в любое время, не ограничено.
Это свойство устанавливает предельное значение числа процессов слияния, которые могут одновременно выполняться на публикации слиянием. Если есть больше процессов слияния, запланированных одновременно, чем значение, разрешенное для выполнения, то избыточные задания помещаются в очередь и подождите, пока текущий процесс слияния завершится.
[ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots
Максимальное количество сеансов агента моментальных снимков, которые могут одновременно выполняться для формирования моментальных снимков отфильтрованных данных для секций подписчиков. @max_concurrent_dynamic_snapshots имеет значение int с значением по умолчанию0
. Если 0
число сеансов моментальных снимков не ограничено. Если есть больше процессов моментальных снимков, запланированных одновременно, чем значение, разрешенное для выполнения, то избыточные задания помещаются в очередь и ожидают завершения текущего процесса моментального снимка.
[ @use_partition_groups = ] N'use_partition_groups'
Указывает, что для оптимизации процесса синхронизации должны использоваться предварительно вычисляемые секции. @use_partition_groups — nvarchar(5) и может быть одним из следующих значений:
значение | Описание |
---|---|
true |
Публикация использует предварительно вычисляемые секции. |
false |
Публикация не использует предварительно компилированные секции. |
NULL (по умолчанию) |
Стратегию секционирования выбирает система. |
По умолчанию используются предварительно вычисляемые секции. Чтобы избежать использования предварительно вычисляемых секций, @use_partition_groups необходимо задать для false
. Когда NULL
система решает, можно ли использовать предварительно вычисляемые секции. Если предварительно компилируемые секции нельзя использовать, это значение эффективно становится false
без создания ошибок. В таких случаях @keep_partition_changes можно задать для true
обеспечения некоторой оптимизации. Дополнительные сведения см. в разделе Параметризованные фильтры — параметризованные фильтры строк и параметризованные фильтры — оптимизация для предварительно вычисляемых секций.
[ @publication_compatibility_level = ] N'publication_compatibility_level'
Указывает обратную совместимость публикации. @publication_compatibility_level имеет значение nvarchar(6) и может быть одним из следующих значений:
Значение | Версия |
---|---|
90RTM |
SQL Server 2005 (9.x) |
100RTM |
SQL Server 2008 (10.0.x) |
[ @replicate_ddl = ] replicate_ddl
Указывает, поддерживается ли для публикации репликация схемы. @replicate_ddl имеет значение int с значением по умолчаниюNULL
. 1
указывает, что операторы языка определения данных (DDL), выполняемые на издателе, реплицируются и 0
указывают, что инструкции DDL не реплицируются. Дополнительные сведения см. в статье Внесение изменений в схемы баз данных публикации.
Параметр @replicate_ddl учитывается при добавлении столбца инструкцией DDL. Параметр @replicate_ddl игнорируется при изменении или удалении столбца в соответствии со следующими причинами.
При удалении столбца необходимо обновить,
sysarticlecolumns
чтобы предотвратить включение новых операторов DML, которые привели бы к сбою агента распространителя. Параметр @replicate_ddl игнорируется, так как репликация всегда должна реплицировать изменение схемы.При изменении столбца исходный тип данных или возможность null может измениться, что приводит к тому, что инструкции DML содержат значение, которое может быть несовместимо с таблицей на подписчике. Такие инструкции DML могут привести к тому, что работа агента распространителя завершится ошибкой. Параметр @replicate_ddl игнорируется, так как репликация всегда должна реплицировать изменение схемы.
Если инструкция DDL добавляет новый столбец,
sysarticlecolumns
он не включает новый столбец. Инструкции DML не пытаются реплицировать данные для нового столбца. Этот параметр учитывается потому, что допустимо как выполнение, так и не выполнение репликации DDL.
[ @allow_subscriber_initiated_snapshot = ] N'allow_subscriber_initiated_snapshot'
Указывает, могут ли подписчики на данную публикацию инициировать процесс моментального снимка для создания отфильтрованного моментального снимка своих секций данных. @allow_subscriber_initiated_snapshot — nvarchar(5) с значением по умолчаниюfalse
. true
указывает, что подписчики могут инициировать процесс моментального снимка.
[ @allow_web_synchronization = ] N'allow_web_synchronization'
Указывает, включена ли для публикации веб-синхронизация. @allow_web_synchronization — nvarchar(5) с значением по умолчаниюfalse
. true
указывает, что подписки на эту публикацию можно синхронизировать по протоколу HTTPS. Дополнительные сведения см. в статье Web Synchronization for Merge Replication. Для поддержки подписчиков SQL Server Compact необходимо указать true
.
[ @web_synchronization_url = ] N'web_synchronization_url'
Значение URL-адреса по умолчанию, применяемое для веб-синхронизации. @web_synchronization_url — nvarchar(500) с значением по умолчаниюNULL
. Определяет URL-адрес Интернета по умолчанию, если он не задан явным образом при выполнении sp_addmergepullsubscription_agent .
[ @allow_partition_realignment = ] N'allow_partition_realignment'
Определяет, посылаются ли операции удаления подписчику, если в результате изменения строки на издателе изменяется его секция. @allow_partition_realignment — nvarchar(5) с значением по умолчаниюtrue
.
true
отправляет удаление подписчику, чтобы отразить результаты изменения секции, удалив данные, которые больше не являются частью секции подписчика.false
Оставляет данные из старой секции на подписчике, где изменения, внесенные в эти данные издателя, не реплицируются на этот подписчик, но изменения, внесенные на подписчик реплицируется на издателя.
Установка @allow_partition_realignment false
используется для хранения данных в подписке из старой секции, когда данные должны быть доступны для исторических целей.
Примечание.
Данные, оставшиеся на подписчике в результате установки @allow_partition_realignmentfalse
, должны обрабатываться так, как если бы это было доступно только для чтения. Однако это не применяется системой репликации.
[ @retention_period_unit = ] N'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 бит с значением по умолчанию0
.
1
означает, что изменения передаются с подписчика до автоматической повторной инициализации.
Внимание
Если вы добавляете, удаляете или изменяете параметризованный фильтр, ожидающие изменения на подписчике не могут быть отправлены издателю во время повторной инициализации. Если нужно передать изменения, ожидающие обработки, то перед изменением фильтра необходимо синхронизировать все подписки.
[ @conflict_logging = ] N'conflict_logging'
Определяет место хранения записей конфликта. @conflict_logging — nvarchar(15) и может быть одним из следующих значений:
значение | Описание |
---|---|
publisher |
Конфликтующие записи хранятся на издателе. |
subscriber |
Конфликтующие записи хранятся на подписчике, вызвавшем конфликт. Не поддерживается для подписчиков SQL Server Compact. |
both |
Конфликтующие записи хранятся одновременно на издателе и на подписчике. |
NULL (по умолчанию) |
Репликация автоматически задает значение @conflict_logging, если значение @publication_compatibility_level both и 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 используется только в том случае, если значение false
@snapshot_in_default_folder.
При включенной репликации DDL (@replicate_ddl = 1
) для публикации для внесения изменений DDL без репликации в публикацию необходимо сначала выполнить sp_changemergepublication, чтобы задать значение @replicate_ddl0
. После выдачи инструкций 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'AdventureWorks2022';
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 [AdventureWorks2022]
EXEC sp_addmergepublication
-- These parameters are optional.
@publication = @publication,
-- optional parameters
@description = N'Merge publication of AdventureWorks2022.',
@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