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


sp_addpublication_snapshot (Transact-SQL)

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

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

Внимание

При настройке издателя с удаленным распространителем значения, предоставленные для всех параметров, включая @job_login и @job_password, отправляются распространителю в виде обычного текста. Прежде чем выполнять эту хранимую процедуру, необходимо зашифровать соединение между издателем и его удаленным распространителем. Дополнительные сведения см. в разделе "Настройка SQL Server ядро СУБД для шифрования подключений".

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

Синтаксис

sp_addpublication_snapshot
    [ @publication = ] N'publication'
    [ , [ @frequency_type = ] frequency_type ]
    [ , [ @frequency_interval = ] frequency_interval ]
    [ , [ @frequency_subday = ] frequency_subday ]
    [ , [ @frequency_subday_interval = ] frequency_subday_interval ]
    [ , [ @frequency_relative_interval = ] frequency_relative_interval ]
    [ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @active_start_time_of_day = ] active_start_time_of_day ]
    [ , [ @active_end_time_of_day = ] active_end_time_of_day ]
    [ , [ @snapshot_job_name = ] N'snapshot_job_name' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
[ ; ]

Аргументы

[ @publication = ] N'publication'

Имя публикации. @publication — sysname без значения по умолчанию.

[ @frequency_type = ] frequency_type

Частота выполнения агент моментальных снимков. @frequency_type является int и может быть одним из следующих значений.

значение Описание
1 Однократно
4 (по умолчанию) Ежедневно
8 Weekly (Еженедельно);
16 Ежемесячная
32 Ежемесячно, в соответствии с заданным интервалом
64 При запуске агент SQL Server
128 Запускать, когда компьютер простаивает

[ @frequency_interval = ] frequency_interval

Значение, применяемое к частоте, заданной @frequency_type. @frequency_interval является int и может быть одним из следующих значений.

Значение аргумента frequency_type Воздействие на аргумент frequency_interval
1 @frequency_interval не используется.
4 (по умолчанию) Каждые @frequency_interval дней с по умолчанию ежедневно.
8 @frequency_interval является одним или несколькими из следующих (в сочетании с | (битовое ИЛИ) логический оператор):

1 = воскресенье |

2 = понедельник |

4 = вторник |

8 = среда |

16 = четверг |

32 = пятница |

64 = суббота
16 На @frequency_interval день месяца.
32 @frequency_interval одно из следующих значений:

1 = воскресенье |

2 = понедельник |

3 = вторник |

4 = среда |

5 = четверг |

6 = пятница |

7 = суббота |

8 = день |

9 = еженедельный день |

10 = выходные дни
64 @frequency_interval не используется.
128 @frequency_interval не используется.

[ @frequency_subday = ] frequency_subday

Единица для freq_subday_interval. @frequency_subday является int и может быть одним из этих значений.

значение Описание
1 Однократно
2 Second
4 (по умолчанию) Minute
8 Часы

[ @frequency_subday_interval = ] frequency_subday_interval

Интервал для frequency_subday в минутах. @frequency_subday_interval имеет значение int с значением по умолчанию5.

[ @frequency_relative_interval = ] frequency_relative_interval

Дата выполнения агент моментальных снимков. @frequency_relative_interval имеет значение int с значением по умолчанию1.

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Коэффициент повторения, используемый frequency_type. @frequency_recurrence_factor имеет значение int с значением по умолчанию0.

[ @active_start_date = ] active_start_date

Дата, когда агент моментальных снимков сначала запланирована, отформатирована как yyyyMMdd. @active_start_date имеет значение int с значением по умолчанию0.

[ @active_end_date = ] active_end_date

Дата, когда агент моментальных снимков перестает планироваться, отформатирована как yyyyMMdd. @active_end_date является int, с значением по умолчанию 99991231, что означает 31 декабря 9999 года.

[ @active_start_time_of_day = ] active_start_time_of_day

Время дня, когда агент моментальных снимков впервые запланировано, отформатировано как HHmmss. @active_start_time_of_day имеет значение int с значением по умолчанию0.

[ @active_end_time_of_day = ] active_end_time_of_day

Время дня, когда агент моментальных снимков перестает планироваться, форматируется как HHmmss. @active_end_time_of_day является int, с по умолчанию235959, что означает 11:59:59 вечера, как измеряется на 24-часовых часах.

[ @snapshot_job_name = ] N'snapshot_job_name'

Имя существующего агент моментальных снимков задания, если используется существующее задание. @snapshot_job_name — nvarchar(100) с значением по умолчаниюNULL. Этот параметр предназначен для внутреннего использования и не должен быть указан при создании новой публикации. Если указан @snapshot_agent_name, @job_login и @job_password должны бытьNULL.

[ @publisher_security_mode = ] publisher_security_mode

Примечание.

Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).

Режим безопасности, используемый агентом при подключении к издателю. @publisher_security_mode имеет значение int с значением по умолчанию1. Значение 0 должно быть указано для издателей, отличных от SQL Server. По возможности используйте проверка подлинности Windows.. Следующие значения определяют режим безопасности:

  • 0 указывает проверку подлинности SQL Server.
  • 1указывает проверка подлинности Windows.
  • 2 указывает проверку подлинности паролей Microsoft Entra, начиная с SQL Server 2022 (16.x) CU 6.
  • 3 указывает встроенную проверку подлинности Microsoft Entra, начиная с SQL Server 2022 (16.x) CU 6.
  • 4 указывает проверку подлинности маркера Microsoft Entra, начиная с SQL Server 2022 (16.x) CU 6.

[ @publisher_login = ] N'publisher_login'

Имя входа, используемое для соединения с издателем. @publisher_login — sysname с значением по умолчаниюNULL. @publisher_login необходимо указать при @publisher_security_mode0. Если @publisher_login есть NULL и @publisher_security_mode1, то при подключении к издателю используется учетная запись, указанная в @job_login.

[ @publisher_password = ] N'publisher_password'

Пароль, используемый при подключении к издателю. @publisher_password — sysname с значением по умолчаниюNULL.

Внимание

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

[ @job_login = ] N'job_login'

Имя входа для учетной записи, в которой выполняется агент. В Управляемый экземпляр SQL Azure используйте учетную запись SQL Server. @job_login — nvarchar(257) с значением по умолчаниюNULL. Эта учетная запись всегда используется для подключений агента к распространителю. Необходимо указывать этот аргумент при создании нового задания агента моментальных снимков.

Для издателей, отличных от SQL Server, это должно быть то же имя входа, указанное в sp_adddistpublisher.

[ @job_password = ] N'job_password'

Пароль для учетной записи Windows, в которой выполняется агент. @job_password — sysname, без значения по умолчанию. Необходимо указывать этот аргумент при создании нового задания агента моментальных снимков.

Внимание

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

[ @publisher = ] N'publisher'

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

@publisher не следует использовать при создании агент моментальных снимков на издателе SQL Server.

[ @distributor_security_mode = ] distributor_security_mode

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

[ @distributor_login = ] N'distributor_login'

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

[ @distributor_password = ] N'distributor_password'

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

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

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

Замечания

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

Примеры

-- 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_snapshot