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_freq — nvarchar(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 и более ранними версиями. При указании lastwriter
SQL Server позволяет автоматически разрешать конфликты на основе последней записи.
Значения кода возврата
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
) для публикации для внесения неустранимых изменений 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, недостаточно.
Связанный контент
- 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)