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 (Transact-SQL).
[ @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