sys.sp_addlogreader_agent (Transact-SQL)

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

Добавляет агент чтения журнала в данную базу данных. Эта хранимая процедура выполняется на издателе в базе данных публикации.

Внимание

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

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

Синтаксис

sys.sp_addlogreader_agent
    [ [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @job_security_mode = ] job_security_mode ]
[ ; ]

Аргументы

[ @job_login = ] N'job_login'

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

Примечание.

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

[ @job_password = ] N'job_password'

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

Внимание

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

[ @job_name = ] N'job_name'

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

[ @publisher_security_mode = ] publisher_security_mode

Примечание.

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

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

  • 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. Если 1, то при подключении к издателю используется учетная запись Windows, указанная в @job_login.

[ @publisher_password = ] N'publisher_password'

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

Внимание

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

[ @publisher = ] N'publisher'

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

Примечание.

Этот параметр не следует указывать для издателя SQL Server.

[ @job_security_mode = ] job_security_mode

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

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

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

Замечания

sp_addlogreader_agent используется в репликации транзакций.

Чтобы добавить агент чтения журналов, необходимо выполнить, sp_addlogreader_agent если вы обновили базу данных, которая была включена для репликации до этой версии SQL Server, прежде чем публикация была создана, которая использовала базу данных.

Разрешения

Могут выполняться только члены предопределенных ролей сервера sysadmin или sp_addlogreader_agent db_owner предопределенных ролей базы данных.

Примеры

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