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


sp_addpublication (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

[ @publication = ] N'publication'

Имя создаваемой публикации. @publication — sysname без значения по умолчанию. В базе данных это имя должно быть уникальным.

[ @taskid = ] taskid

Поддерживается только для обратной совместимости; используйте sp_addpublication_snapshot (Transact-SQL).

[ @restricted = ] N'restricted'

Поддерживается только для обратной совместимости; use default_access.

[ @sync_method = ] N'sync_method'

Режим синхронизации. @sync_method — nvarchar(40) и может быть одним из следующих значений.

значение Описание
native 1 Производит выходные данные программы массового копирования всех таблиц.
character Производит выходные данные программы массового копирования всех таблиц в символьном режиме. Примечание. Для издателя character Oracle допустимо только для репликации моментальных снимков.
concurrent 1 Создает выходные данные программы массового копирования в собственном режиме для всех таблиц, но не блокирует таблицы во время моментального снимка. Поддерживается только для публикаций транзакций.
concurrent_c Создает выходные данные программы массового копирования в режиме символов для всех таблиц, но не блокирует таблицы во время моментального снимка. Поддерживается только для публикаций транзакций.
database snapshot Производит выходные данные программы массового копирования всех таблиц в моментальном снимке базы данных. Моментальные снимки базы данных недоступны в каждом выпуске SQL Server. Список функций, поддерживаемых выпусками SQL Server, см. в выпусках и поддерживаемых функциях SQL Server 2022.
database snapshot character Производит выходные данные программы массового копирования в символьном режиме всех таблиц в моментальном снимке базы данных. Моментальные снимки базы данных недоступны в каждом выпуске SQL Server. Список функций, поддерживаемых выпусками SQL Server, см. в выпусках и поддерживаемых функциях SQL Server 2022.
NULL (по умолчанию) По native умолчанию для издателей SQL Server. Для издателей, отличных от SQL Server, по умолчанию character используется Snapshot значение @repl_freq и concurrent_c для всех других случаев.

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

[ @repl_freq = ] N'repl_freq'

Тип частоты репликации, @repl_freqnvarchar(10) и может быть одним из следующих значений.

значение Описание
continuous (по умолчанию) Агент чтения журналов выполняется непрерывно. Для издателей, отличных от SQL Server, это требует, чтобы @sync_method иметь значение concurrent_c.
snapshot Агент чтения журналов выполняется по расписанию. Для издателей, отличных от SQL Server, это требует, чтобы @sync_method иметь значение character.

[ @description = ] N'description'

Необязательное описание публикации. @description имеет значение nvarchar(255) с значением по умолчаниюNULL.

[ @status = ] N'status'

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

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

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

[ @independent_agent = ] N'independent_agent'

Указывает, есть ли автономный агент распространения для этой публикации. @independent_agent — nvarchar(5) с значением по умолчаниюfalse.

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

[ @immediate_sync = ] N'immediate_sync'

Указывает, создаются ли для этой публикации файлы синхронизации при каждом запуске агента моментальных снимков. @immediate_sync — nvarchar(5) с значением по умолчаниюfalse.

Если trueфайлы синхронизации создаются или создаются повторно при каждом запуске агент моментальных снимков. Подписчики могут получить файлы синхронизации немедленно, если агент моментальных снимков завершил работу до создания подписки. Новые подписки получают самые свежие файлы синхронизации, сформированные при последнем выполнении агента моментальных снимков. @independent_agent должно быть true для @immediate_synctrue. Если falseфайлы синхронизации создаются только в том случае, если есть новые подписки. При добавочном добавлении новой статьи в существующую публикацию необходимо вызывать sp_addsubscription для каждой подписки. Подписчики не могут получать файлы синхронизации после подписки до тех пор, пока агент моментальных снимков не будут запущены и завершены.

[ @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 каталог.

[ @allow_push = ] N'allow_push'

Указывает, можно ли создать принудительные подписки для конкретной публикации. @allow_push — nvarchar(5), с значением по умолчанию, что позволяет отправлять подписки на публикациюtrue.

[ @allow_pull = ] N'allow_pull'

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

[ @allow_anonymous = ] N'allow_anonymous'

Указывает, можно ли создать анонимные подписки для конкретной публикации. @allow_anonymous — nvarchar(5) с значением по умолчаниюfalse. Если trueдля @immediate_sync также должно быть задано trueзначение . Если falseанонимные подписки не разрешены в публикации.

[ @allow_sync_tran = ] N'allow_sync_tran'

Определяет, разрешены ли в публикации немедленно обновляемые подписки. @allow_sync_tran — nvarchar(5) с значением по умолчаниюfalse. true не поддерживается для издателей Oracle.

[ @autogen_sync_procs = ] N'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 имеет значение int с значением по умолчанию336. Если подписка не активна в течение срока хранения, срок ее действия истекает и удаляется. Это значение может превышать максимальный срок хранения базы данных распространителя на издателе. Если 0известные подписки на публикацию никогда не будут истекать и удаляться агентом очистки подписки с истекшим сроком действия.

[ @allow_queued_tran = ] N'allow_queued_tran'

Включает или отключает очередь изменений на подписчике, пока эти изменения не применятся на издателе. @allow_queued_tran — nvarchar(5) с значением по умолчаниюfalse.

  • Если falseизменения на подписчике не помещаются в очередь.
  • true не поддерживается для издателей Oracle.

[ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder'

Указывает, хранятся ли файлы моментальных снимков в папке по умолчанию. @snapshot_in_defaultfolder — nvarchar(5) с значением по умолчаниюtrue.

  • Если trueфайлы моментальных снимков можно найти в папке по умолчанию.
  • Если falseфайлы моментальных снимков хранятся в альтернативном расположении, указанном @alt_snapshot_folder.

Другим местом может быть другой сервер, сетевой диск или съемный носитель (такой как компакт-диск или съемные диски). Файлы моментальных снимков можно также хранить на FTP-сайте, откуда подписчик позже может их получить. Этот параметр может быть истинным и по-прежнему иметь расположение в параметре @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. Если моментальный снимок применяется на подписчике, то агент распространителя запускает предварительный скрипт моментального снимка до выполнения скриптов реплицируемых объектов. Скрипт выполняется в контексте безопасности, использованном для агента распространителя при подключении к базе данных подписки.

[ @post_snapshot_script = ] N'post_snapshot_script'

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

[ @compress_snapshot = ] N'compress_snapshot'

Указывает, что моментальный снимок, записанный в расположение @alt_snapshot_folder , должен быть сжатым в формате MICROSOFT CAB. @compress_snapshot — nvarchar(5) с значением по умолчаниюfalse.

  • false указывает, что моментальный снимок не сжимается.
  • true указывает, что моментальный снимок сжимается.

Файлы моментальных снимков размером более 2 гигабайт (ГБ) не могут быть сжаты. Сжатые файлы моментальных снимков распаковываются в расположении запуска агента распространителя. Со сжатыми моментальными снимками обычно используются подписки по запросу, чтобы сжатые файлы распаковывались на подписчике. Моментальный снимок в папке по умолчанию не может быть сжатым.

[ @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) с значением по умолчаниюNULL. Так как это свойство хранится для каждой публикации, каждая публикация может иметь собственные @ftp_subdirctory или не иметь подкаталога, указанного со значением NULL .

[ @ftp_login = ] N'ftp_login'

Имя пользователя для подключения к службе FTP. @ftp_login — sysname с значением по умолчаниюanonymous.

[ @ftp_password = ] N'ftp_password'

Пароль пользователя для подключения к службе FTP. @ftp_password — sysname с значением по умолчаниюNULL.

[ @allow_dts = ] N'allow_dts'

Указывает, что в публикации разрешены преобразования данных. При создании подписки можно указать пакет служб DTS. @allow_dts — nvarchar(5) с значением по умолчаниюfalse, что не разрешает преобразования DTS. Если @allow_dts имеет значение true, @sync_method должен иметь значение character или concurrent_c.

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

[ @allow_subscription_copy = ] N'allow_subscription_copy'

Разрешает или запрещает возможность копирования баз данных подписки, подписанных на эту публикацию. @allow_subscription_copy — nvarchar(5) с значением по умолчаниюfalse.

[ @conflict_policy = ] N'conflict_policy'

Задает политику устранения конфликтов при обновлении подписчика посредством очередей. @conflict_policy — nvarchar(100) и может быть одним из следующих значений.

значение Описание
pub wins Разрешение конфликта в пользу издателя.
sub reinit Повторная инициализация подписки.
sub wins Разрешение конфликта в пользу подписчика.
NULL (по умолчанию) Если NULLпубликация является публикацией моментальных снимков, политика по умолчанию становится sub reinit. Если NULL публикация не является публикацией моментальных снимков, значение по умолчанию становится pub wins.

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

[ @centralized_conflicts = ] N'centralized_conflicts'

Определяет, хранятся ли на издателе конфликтные записи. @centralized_conflicts — nvarchar(5) с значением по умолчаниюNULL.

  • Если trueзаписи конфликтов хранятся на издателе.
  • Если falseзаписи конфликтов хранятся как на издателе, так и у подписчика, вызвавшего конфликт.

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

[ @conflict_retention = ] conflict_retention

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

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

[ @queue_type = ] N'queue_type'

Задает используемый тип очереди. @queue_type — nvarchar(10) и может быть одним из этих значений.

значение Описание
sql Используйте SQL Server для хранения транзакций.
NULL (по умолчанию) По sqlумолчанию используется SQL Server для хранения транзакций.

Примечание.

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

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

[ @add_to_active_directory = ] N'add_to_active_directory'

Этот параметр устарел и поддерживается только для обратной совместимости скриптов. Вы больше не можете добавлять сведения о публикации в Microsoft Active Directory.

[ @logreader_job_name = ] N'logreader_job_name'

Имя существующего задания агента. @logreader_job_name — sysname, значение по умолчанию NULL— sysname. Этот параметр указывается только в том случае, если агент чтения журналов использует существующее задание вместо нового создаваемого.

[ @qreader_job_name = ] N'qreader_job_name'

Имя существующего задания агента. @qreader_job_name имеет имя sysname с значением по умолчаниюNULL. Этот параметр указывается только в том случае, если агент чтения очередей использует существующее задание вместо нового создаваемого.

[ @publisher = ] N'publisher'

Указывает издателя, отличного от SQL Server. @publisher — sysname с значением по умолчаниюNULL.

@publisher не следует использовать при добавлении публикации в издатель SQL Server.

[ @allow_initialize_from_backup = ] N'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, а для издателей SQL Server используется по умолчанию 1 и 0 для издателей, отличных от SQL Server.

  • 1 указывает, что операторы языка определения данных (DDL), выполняемые на издателе, реплицируются.
  • 0 указывает, что инструкции DDL не реплицируются.

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

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

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

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

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

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

[ @enabled_for_p2p = ] N'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 = ] N'publish_local_changes_only'

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

[ @enabled_for_het_sub = ] N'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.

Дополнительные сведения см. в статье Non-SQL Server Subscribers.

[ @p2p_conflictdetection = ] N'p2p_conflictdetection'

Разрешает агенту распространителя обнаруживать конфликты, если публикация поддерживает одноранговую репликацию. @p2p_conflictdetection — nvarchar(5) с значением по умолчаниюfalse. Дополнительные сведения см. в разделе "Одноранговая— одноранговая репликация" — обнаружение конфликтов в одноранговой репликации.

[ @p2p_originator_id = ] p2p_originator_id

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

[ @p2p_continue_onconflict = ] N'p2p_continue_onconflict'

Определяет, продолжает ли агент распространителя обрабатывать изменения после обнаружения конфликта. @p2p_continue_onconflict — nvarchar(5) с значением по умолчаниюfalse.

Внимание

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

[ @allow_partition_switch = ] N'allow_partition_switch'

Указывает, можно ли ALTER TABLE...SWITCH выполнять инструкции в опубликованной базе данных. @allow_partition_switch — nvarchar(5) с значением по умолчаниюfalse. Дополнительные сведения см. в статье Replicate Partitioned Tables and Indexes (Репликация секционированных таблиц и индексов).

[ @replicate_partition_switch = ] N'replicate_partition_switch'

Указывает, следует ли ALTER TABLE...SWITCH реплицировать инструкции, выполняемые в опубликованной базе данных подписчикам. @replicate_partition_switch — nvarchar(5) с значением по умолчаниюNULL. Этот параметр действителен, только если @allow_partition_switch имеет значение TRUE.

[ @allow_drop = ] N'allow_drop'

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

[ @p2p_conflictdetection_policy = ] N'p2p_conflictdetection_policy'

Применимо к: SQL Server 2019 (15.x) CU 13 и более поздних версий.

@p2p_conflictdetection_policy — nvarchar(12) и может быть одним из следующих значений:

значение Описание
originatorid (по умолчанию) Агент распространителя обнаруживает конфликт и решает победителя на основе идентификатора инициатора, если p2p_continue_onconflict = N'true'. В противном случае происходит ошибка.
lastwriter Агент распространителя обнаруживает конфликт и решает победителя на основе даты и времени последнего записи, если p2p_continue_onconflict = N'true'. В противном случае происходит ошибка.

Примечание.

При указании originatoridобнаружение конфликтов совпадает с sql Server 2019 (15.x) CU 12 и более ранними версиями. При указании lastwriterSQL Server позволяет автоматически разрешать конфликты на основе последней записи.

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

0 (успешно) или 1 (сбой).

Замечания

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

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

При включенной репликации DDL (@replicate_ddl = 1) для публикации для внесения неустранимых изменений DDL 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, недостаточно.