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


sp_addlogreader_agent (Transact-SQL)

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

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

Внимание

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

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

Синтаксис

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

[ @publisher_password = ] N'publisher_password'

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

Внимание

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

[ @publisher = ] N'publisher'

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

Примечание.

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

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

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

Замечания

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

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

Разрешения

Могут выполняться sp_addlogreader_agentтолько члены предопределенных ролей сервера sysadmin или 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