sp_addpublication (Transact-SQL)

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

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

Синтаксис

sp_addpublication [ @publication = ] 'publication'
    [ , [ @taskid = ] tasked ]
    [ , [ @restricted = ] 'restricted' ]
    [ , [ @sync_method = ] 'sync_method' ]
    [ , [ @repl_freq = ] 'repl_freq' ]
    [ , [ @description = ] 'description' ]
    [ , [ @status = ] 'status' ]
    [ , [ @independent_agent = ] 'independent_agent' ]
    [ , [ @immediate_sync = ] 'immediate_sync' ]
    [ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
    [ , [ @allow_push = ] 'allow_push'
    [ , [ @allow_pull = ] 'allow_pull' ]
    [ , [ @allow_anonymous = ] 'allow_anonymous' ]
    [ , [ @allow_sync_tran = ] 'allow_sync_tran' ]
    [ , [ @autogen_sync_procs = ] 'autogen_sync_procs' ]
    [ , [ @retention = ] retention ]
    [ , [ @allow_queued_tran= ] 'allow_queued_updating' ]
    [ , [ @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' ]
    [ , [ @allow_dts = ] 'allow_dts' ]
    [ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
    [ , [ @conflict_policy = ] 'conflict_policy' ]
    [ , [ @centralized_conflicts = ] 'centralized_conflicts' ] 
    [ , [ @conflict_retention = ] conflict_retention ]
    [ , [ @queue_type = ] 'queue_type' ]
    [ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
    [ , [ @logreader_job_name = ] 'logreader_agent_name' ]
    [ , [ @qreader_job_name = ] 'queue_reader_agent_name' ]
    [ , [ @publisher = ] 'publisher' ] 
    [ , [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup' ]
    [ , [ @replicate_ddl = ] replicate_ddl ]
    [ , [ @enabled_for_p2p = ] 'enabled_for_p2p' ]
    [ , [ @publish_local_changes_only = ] 'publish_local_changes_only' ]
    [ , [ @enabled_for_het_sub = ] 'enabled_for_het_sub' ]
    [ , [ @p2p_conflictdetection = ] 'p2p_conflictdetection' ]
    [ , [ @p2p_originator_id = ] p2p_originator_id
    [ , [ @p2p_continue_onconflict = ] 'p2p_continue_onconflict'
    [ , [ @allow_partition_switch = ] 'allow_partition_switch'
    [ , [ @replicate_partition_switch = ]'replicate_partition_switch'

Аргументы

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

  • [ @taskid=] taskid
    Поддерживается только для обеспечения обратной совместимости. Используйте параметр sp_addpublication_snapshot (Transact-SQL).

  • [ @restricted=] 'restricted'
    Поддерживается только для обеспечения обратной совместимости. Используйте параметр default_access.

  • [ @sync_method=] 'sync_method**'**
    Режим синхронизации. Аргумент sync_method имеет тип nvarchar(13) и может принимать одно из следующих значений.

    Значение

    Описание

    native

    Производит выходные данные программы массового копирования всех таблиц. Не поддерживается для издателей Oracle.

    character

    Производит выходные данные программы массового копирования всех таблиц в символьном режиме. Для издателей Oracle значение character допустимо только в отношении репликации моментальных снимков.

    concurrent

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

    concurrent_c

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

    database snapshot

    Производит выходные данные программы массового копирования всех таблиц в моментальном снимке базы данных. Для данного параметра необходим выпуск SQL Server Enterprise.

    database snapshot character

    Производит выходные данные программы массового копирования в символьном режиме всех таблиц в моментальном снимке базы данных. Для данного параметра необходим выпуск SQL Server Enterprise.

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

    По умолчанию для издателей Microsoft SQL Server используется значение native. Для издателей, не являющихся SQL Server, используется значение по умолчанию character, если аргумент repl_freq имеет значение Snapshot, а concurrent_c — во всех остальных случаях.

  • [ @repl_freq=] 'repl_freq'
    Тип частоты репликации. Аргумент repl_freq имеет тип nvarchar(10) и может принимать одно из следующих значений.

    Значение

    Описание

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

    Издатель предоставляет выходные данные всех транзакций, записываемых в журнал. Для издателей, не являющихся SQL Server, требуется присвоить аргументу sync_method значение concurrent_c.

    snapshot

    Издатель предоставляет только запланированные события синхронизации. Для издателей, не являющихся SQL Server, требуется присвоить аргументу sync_method значение character.

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

  • [ @status=] 'status'
    Определяет, будут ли доступны данные публикации. Аргумент status имеет тип nvarchar(8) и может принимать одно из следующих значений.

    Значение

    Описание

    active

    Публикация доступна подписчикам немедленно.

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

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

    Не поддерживается для издателей Oracle.

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

  • [ @immediate_sync=] 'immediate_synchronization'
    Указывает, создаются ли для этой публикации файлы синхронизации при каждом запуске агента моментальных снимков. Аргумент immediate_synchronization имеет тип nvarchar(5) и значение по умолчанию FALSE. Если значение равно true, файлы синхронизации создаются или создаются повторно при каждом запуске агента моментальных снимков. Подписчики могут получить файлы синхронизации немедленно, если агент моментальных снимков завершил работу до создания подписки. Новые подписки получают самые свежие файлы синхронизации, сформированные последним запуском агента моментальных снимков. Аргумент independent_agent должен иметь значение true, чтобы аргумент immediate_synchronization имел значение true. Если значение равно false, файлы синхронизации создаются, только если имеются новые подписки. При постепенном добавлении новой статьи к существующей публикации необходимо вызывать процедуру sp_addsubscription для каждой подписки. Подписчики не могут получать файлы синхронизации после подписки, пока агенты моментальных снимков не будут запущены и не завершат работу.

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

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

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

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

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

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

    Значение

    Описание

    true

    Устанавливается автоматически, если включена обновляемая подписка.

    false

    Устанавливается автоматически для издателей Oracle или если обновляемая подписка выключена.

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

    Автоматически присваивается значение true, если включена обновляемая подписка, или false в противном случае.

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

    Пользовательское значение для аргумента autogen_sync_procs будет переопределено в зависимости от значений, указанных для аргументов allow_queued_tran и allow_sync_tran.

  • [ @retention=] retention
    Срок хранения подписки в часах. Аргумент retention имеет тип int и значение по умолчанию 336 часов. Если подписка не активна в течение указанного периода, ее срок действия истекает, и она удаляется. Это значение может превышать максимальный срок хранения базы данных распространителя на издателе. Если значение равно 0, срок действия известных подписок на публикацию никогда не истечет, и они будут удаляться агентом очистки просроченных подписок.

  • [ @allow_queued_tran= ] 'allow_queued_updating'
    Включает или отключает очередь изменений на подписчике, пока эти изменения не применятся на издателе. Аргумент allow_queued_updating имеет тип nvarchar(5) и значение по умолчанию FALSE. Если значение равно false, изменения на подписчике не ставятся в очередь. Значение true не поддерживается для издателей Oracle.

  • [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder'
    Указывает, хранятся ли файлы моментальных снимков в папке по умолчанию. Аргумент snapshot_in_default_folder имеет тип nvarchar(5) и значение по умолчанию TRUE. Если значение равно true, файлы моментальных снимков можно найти в папке по умолчанию. Если значение равно false, файлы моментальных снимков хранятся в другом расположении, заданном аргументом alternate_snapshot_folder. Другим местом может быть другой сервер, сетевой диск или съемный носитель (такой как компакт-диск или съемные диски). Файлы моментальных снимков можно также хранить на 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. Если моментальный снимок применяется на подписчике, то агент распространителя запускает предварительный сценарий моментального снимка до выполнения сценариев реплицируемых объектов. Сценарий выполняется в контексте безопасности, использованного для агента распространителя при подключении к базе данных подписки.

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

  • [ @compress_snapshot= ] 'compress_snapshot'
    Указывает, что моментальный снимок, записываемый по расположению, указанному аргументом @alt_snapshot_folder, будет сжат в формате Microsoft CAB. Аргумент compress_snapshot имеет тип nvarchar(5) и значение по умолчанию FALSE. Значение false означает, что моментальный снимок не сжимается, а значение true означает, что моментальный снимок будет сжат. Нельзя сжать моментальные снимки размером более 2 гигабайт (ГБ). Сжатые файлы моментальных снимков распаковываются в расположении запуска агента распространителя. Со сжатыми моментальными снимками обычно используются подписки по запросу, чтобы сжатые файлы распаковывались на подписчике. Моментальный снимок в папке по умолчанию сжать нельзя.

  • [ @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_login = ] 'ftp_login'
    Имя пользователя, которое используется для подключения к FTP-службе. Аргумент ftp_login имеет тип sysname и значение по умолчанию ANONYMOUS.

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

  • [ @allow_dts = ] 'allow_dts'
    Указывает, что в публикации разрешены преобразования данных. При создании подписки можно указать пакет служб DTS. Аргумент allow_transformable_subscriptions имеет тип nvarchar(5) и значение по умолчанию FALSE, не разрешающее преобразования DTS. Если значение аргумента allow_dts равно true, аргумент sync_method должен иметь значение character или concurrent_c.

    Значение true не поддерживается для издателей Oracle.

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

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

    Значение

    Описание

    pub wins

    Разрешение конфликта в пользу издателя.

    sub reinit

    Повторная инициализация подписки.

    sub wins

    Разрешение конфликта в пользу подписчика.

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

    Если значение равно NULL и публикация является публикацией моментального снимка, политикой по умолчанию становится значение sub reinit. Если значение равно NULL и публикация не является публикацией моментального снимка, политикой по умолчанию становится значение pub wins.

    Для издателей Oracle не поддерживается.

  • [ @centralized_conflicts = ] 'centralized_conflicts'
    Указывает, хранятся ли конфликтующие записи на издателе. Аргумент centralized_conflicts имеет тип nvarchar(5) и значение по умолчанию TRUE. Если значение равно true, конфликтующие записи хранятся на издателе. Если значение равно false, конфликтующие записи хранятся как на издателе, так и на подписчике, вызвавшем конфликт. Не поддерживается для издателей Oracle.

  • [ @conflict_retention = ] conflict_retention
    Задает срок хранения конфликтных записей в днях. Время, в течение которого метаданные конфликта хранятся для одноранговой репликации транзакций и обновляемых посредством очередей подписок. Аргумент conflict_retention имеет тип int и значение по умолчанию 14. Не поддерживается для издателей Oracle.

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

    Значение

    Описание

    sql

    Для хранения транзакций используется SQL Server.

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

    По умолчанию указывается значение sql, которое означает, что для хранения транзакций используется SQL Server.

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

    Использование службы очередей сообщений (Майкрософт) более не поддерживается. Присвоение значения msmq вызовет предупреждение, и репликация автоматически изменит значение на sql.

    Для издателей Oracle не поддерживается.

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

  • [ @logreader_job_name = ] 'logreader_agent_name'
    Имя существующего задания агента. Аргумент logreader_agent_name имеет тип sysname и значение по умолчанию NULL. Он указывается только в том случае, если агент чтения журнала будет использовать существующее задание, а не создающееся заново.

  • [ @qreader_job_name = ] 'queue_reader_agent_name'
    Имя существующего задания агента. Аргумент queue_reader_agent_name имеет тип sysname и значение по умолчанию NULL. Он указывается, только если агент чтения очереди будет использовать существующее задание, а не создающееся заново.

  • [ @publisher = ] 'publisher'
    Задает издатель, отличный от SQL Server. Аргумент publisher имеет тип sysname и значение по умолчанию NULL.

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

    Аргумент publisher не должен использоваться при добавлении публикации к издателю SQL Server.

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

    Значение

    Описание

    true

    Включает инициализацию из резервной копии.

    false

    Отключает инициализацию из резервной копии.

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

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

    Дополнительные сведения см. в разделе Инициализация подписки на публикацию транзакций без моментального снимка.

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

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

    • Если столбец удаляется, то аргумент sysarticlecolumns нужно обновить, чтобы удаленный столбец не включался в новые инструкции DML, в противном случае это вызовет сбой агента распространителя. Аргумент @replicate_ddl не учитывается, так как изменения схемы необходимо реплицировать всегда.

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

    • Если инструкция DDL добавляет новый столбец, то аргумент sysarticlecolumns не содержит нового столбца. Инструкции DML не будут предпринимать попытку репликации данных для нового столбца. Этот параметр учитывается, так как DDL может как реплицироваться, так и не реплицироваться.

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

    • Аргумент allow_anonymous должен иметь значение false.

    • Аргумент allow_dts должен иметь значение false.

    • Аргумент allow_initialize_from_backup должен иметь значение true.

    • Аргумент allow_queued_tran должен иметь значение false.

    • Аргумент allow_sync_tran должен иметь значение false.

    • Аргумент conflict_policy должен иметь значение false.

    • Аргумент independent_agent должен иметь значение true.

    • Аргумент repl_freq должен иметь значение continuous.

    • Аргумент replicate_ddl должен иметь значение 1.

    Дополнительные сведения см. в разделе Одноранговая репликация транзакций.

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

  • [ @enabled_for_het_sub= ] 'enabled_for_het_sub'
    Разрешает публикации поддержку подписчиков, не относящихся к SQL Server. Аргумент enabled_for_het_sub имеет тип nvarchar(5) и значение по умолчанию FALSE. Значение true означает, что публикация поддерживает подписчиков, не относящихся к SQL Server. Если аргумент enabled_for_het_sub имеет значение true, применяются следующие ограничения.

    • Аргумент allow_initialize_from_backup должен иметь значение false.

    • Аргумент allow_push должен иметь значение true.

    • Аргумент allow_queued_tran должен иметь значение false.

    • Аргумент allow_subscription_copy должен иметь значение false.

    • Аргумент allow_sync_tran должен иметь значение false.

    • Аргумент autogen_sync_procs должен иметь значение false.

    • Аргумент conflict_policy должен иметь значение NULL.

    • Аргумент enabled_for_internet должен иметь значение false.

    • Аргумент enabled_for_p2p должен иметь значение false.

    • Аргумент ftp_address должен иметь значение NULL.

    • Аргумент ftp_subdirectory должен иметь значение NULL.

    • Аргумент ftp_password должен иметь значение NULL.

    • Аргумент pre_snapshot_script должен иметь значение NULL.

    • Аргумент post_snapshot_script должен иметь значение NULL.

    • Аргумент replicate_ddl должен иметь значение 0.

    • Аргумент qreader_job_name должен иметь значение NULL.

    • Аргумент queue_type должен иметь значение NULL.

    • Аргумент sync_method не может иметь значение native или concurrent.

    Дополнительные сведения см. в разделе Подписчики, отличные от подписчиков SQL Server.

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

  • [ @p2p_originator_id= ] p2p_originator_id
    Указывает идентификатор в одноранговой топологии. Аргумент p2p_originator_id имеет тип int и значение по умолчанию NULL. Этот идентификатор используется для обнаружения конфликтов, если аргумент p2p_conflictdetection имеет значение TRUE. Укажите положительное, ненулевое значение идентификатора, которое никогда не использовалось в топологии. Для получения списка использовавшихся идентификаторов выполните хранимую процедуру sp_help_peerconflictdetection.

  • [ @p2p_continue_onconflict= ] 'p2p_continue_onconflict'
    Определяет, будет ли агент распространителя продолжать обрабатывать изменения после обнаружения конфликта. Аргумент p2p_continue_onconflict имеет тип nvarchar(5) и значение по умолчанию FALSE.

    ПредупреждениеВнимание!

    Рекомендуется использовать значение по умолчанию FALSE. Если присвоить этому аргументу значение TRUE, то агент распространителя будет пытаться обеспечить сходимость данных в топологии, применяя конфликтующую строку из узла, имеющего наибольшее значение идентификатора инициатора. Этот метод не гарантирует конвергенцию данных. После обнаружения конфликта следует убедиться, что топология остается согласованной. Дополнительные сведения см. в подразделе «Обработка конфликтов» раздела Обнаружение конфликтов в одноранговой репликации.

  • [ @allow_partition_switch= ] 'allow_partition_switch'
    Указывает, могут ли инструкции ALTER TABLE…SWITCH выполняться по отношению к опубликованной базе данных. Аргумент allow_partition_switch имеет тип nvarchar(5) и значение по умолчанию FALSE. Дополнительные сведения см. в разделе Репликация секционированных таблиц и индексов.

  • [ @replicate_partition_switch= ] 'replicate_partition_switch'
    Указывает, должны ли инструкции ALTER TABLE…SWITCH, которые выполняются по отношению к опубликованной базе данных, реплицироваться на подписчики. Аргумент replicate_partition_switch имеет тип nvarchar(5) и значение по умолчанию FALSE. Этот параметр допустим только в том случае, когда параметр allow_partition_switch установлен в значение TRUE.

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

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

Замечания

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

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

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

Пример

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. 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".

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2008R2'; 
SET @publication = N'AdvWorksProductTran'; 
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- This should be passed at runtime.
SET @password = $(Password); 

-- Enable transactional or snapshot replication on the publication database.
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Create a new transactional publication with the required properties. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_push = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;
GO

Разрешения

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