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) и может быть одним из следующих значений.
значение | Description |
---|---|
native 1 |
Производит выходные данные программы массового копирования всех таблиц. |
character |
Производит выходные данные программы массового копирования всех таблиц в символьном режиме. Примечание. Для издателя Oracle допустимо только для моментального character снимка реплика. |
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
приведет к предупреждению, и реплика tion автоматически задает значение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 = ] репликаte_ddl
Указывает, поддерживается ли для публикации репликация схемы. @репликаte_ddl является int, по умолчанию 1
для издателей SQL Server и 0
для издателей, отличных от SQL Server.
1
указывает, что операторы языка определения данных (DDL), выполняемые на издателе, реплика.0
указывает, что операторы DDL не реплика.
Функция реплика схемы не поддерживается для издателей Oracle.
Дополнительные сведения см. в статье Внесение изменений в схемы баз данных публикации.
Параметр @репликаte_ddl учитывается при добавлении столбца инструкции DDL. Параметр @репликаte_ddl игнорируется при изменении или удалении столбца при изменении или удалении столбца по следующим причинам.
При удалении столбца необходимо обновить,
sysarticlecolumns
чтобы предотвратить включение новых операторов DML, что приведет к сбою агента распространителя. Параметр @репликаte_ddl игнорируется, так как реплика tion всегда должен реплика изменения схемы.При изменении столбца исходный тип данных или возможность null может измениться, что приводит к тому, что инструкции DML содержат значение, которое может быть несовместимо с таблицей на подписчике. Такие инструкции DML могут привести к тому, что работа агента распространителя завершится ошибкой. Параметр @репликаte_ddl игнорируется, так как реплика tion всегда должен реплика изменения схемы.
Если инструкция DDL добавляет новый столбец,
sysarticlecolumns
он не включает новый столбец. Инструкции DML не пытаются реплика te данных для нового столбца. Этот параметр учитывается потому, что допустимо как выполнение, так и не выполнение репликации DDL.
[ @enabled_for_p2p = ] N'enabled_for_p2p'
Разрешает использование публикации в одноранговой топологии репликации. @enabled_for_p2p — nvarchar(5) с значением по умолчаниюfalse
. true
указывает, что публикация поддерживает одноранговые реплика. При настройке @enabled_for_p2ptrue
применяются следующие ограничения:
- @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
. - Должен быть
1
@репликаte_ddl .
Дополнительные сведения см. в разделе одноранговая репликация транзакций.
[ @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_subtrue
применяются следующие ограничения:
- @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
. - @репликаte_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'репликаte_partition_switch'
Указывает, должны ли ALTER TABLE...SWITCH
операторы, выполняемые для опубликованной базы данных, реплика подписчикам. @репликаte_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
используется в моментальном снимке реплика и реплика транзакций.
Если существует несколько публикаций, которые публикуют один и тот же объект базы данных, то только публикации со значением @репликаte_ddl значения 1
реплика tesALTER TABLE
, ALTER VIEW
, ALTER PROCEDURE
и ALTER FUNCTION
ALTER TRIGGER
DDL. ALTER TABLE DROP COLUMN
Однако инструкция DDL реплика всех публикаций, публикующих удаленный столбец.
Если для публикации включен параметр DDL реплика tion (@репликаte_ddl1
= ) для публикации, чтобы не реплика изменения DDL в публикации, сначала необходимо выполнить sp_changepublication, чтобы задать значение @репликаte_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_реплика tiondboption (Transact-SQL)
- Публикация данных и объектов базы данных
- Хранимые процедуры репликации (Transact-SQL)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по