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


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

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

    database snapshot character

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

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

    По умолчанию для издателей MicrosoftSQL 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 САВ. Аргумент 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) и значение по умолчанию 1 и может принимать одно из следующих значений.

    Значение

    Описание

    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 для всех остальных публикаций.

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

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

    Чтобы предотвратить отсутствие данных подписчика, при использовании процедуры sp_addpublication с @allow_initialize_from_backup = N'true' всегда используйте @immediate_sync = N'true'.

  • [ @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'AdventureWorks'; 
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. Имена входа, используемые для проверки подлинности Windows, должны иметь учетные записи пользователей в базе данных, представляющие их учетные записи пользователей Windows. Учетной записи пользователя, представляющей группу Windows, недостаточно.

См. также

Справочник

sp_addlogreader_agent (Transact-SQL)

sp_addpublication_snapshot (Transact-SQL)

sp_changepublication (Transact-SQL)

sp_droppublication (Transact-SQL)

sp_helppublication (Transact-SQL)

sp_replicationdboption (Transact-SQL)

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

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

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