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


sp_addlogreader_agent (Transact-SQL)

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

Примечание по безопасностиПримечание по безопасности

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

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_addlogreader_agent [ @job_login = ] 'job_login'
        , [ @job_password = ] 'job_password'
    [ , [ @job_name = ] 'job_name' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] 'publisher_login' ]
    [ , [ @publisher_password = ] 'publisher_password' ] 
    [ , [ @publisher = ] 'publisher' ]

Аргументы

  • [ @job_login= ] 'job_login'
    Имя входа для учетной записи Microsoft Windows, под которой запускается агент. Аргумент job_login имеет тип nvarchar(257) и значение NULL по умолчанию. Для соединений агента с распространителем всегда используется эта учетная запись Windows.

    ПримечаниеПримечание

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

  • [ @job_password= ] 'job_password'
    Пароль для учетной записи Windows, с которой запускается агент. Аргумент job_password имеет тип sysname и значение по умолчанию NULL.

    Примечание по безопасностиПримечание по безопасности

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

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

  • [ @publisher_security_mode= ] publisher_security_mode
    Режим безопасности, используемый агентом при соединении с издателем. Аргумент publisher_security_mode имеет тип smallint и значение по умолчанию 1. 0 указывает на проверку подлинности SQL Server, а 1 указывает на проверку подлинности Windows. Для издателей, отличных от SQL Server, должно указываться значение 0.

  • [ @publisher_login= ] 'publisher_login'
    Имя входа, используемое для подключения к издателю. Аргумент publisher_login имеет тип sysname и значение NULL по умолчанию. Аргумент publisher_login должен быть указан, если аргумент publisher_security_mode имеет значение 0. Если аргумент publisher_login равен NULL, а аргумент publisher_security_mode равен 1, тогда будет использоваться учетная запись Windows, указанная в аргументе job_login для подключения к издателю.

  • [ @publisher_password= ] 'publisher_password'
    Пароль, используемый при установке соединения с издателем. Аргумент publisher_password имеет тип sysname и значение по умолчанию NULL.

    Примечание по безопасностиПримечание по безопасности

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

  • [ @publisher= ] 'publisher'
    Имя издателя, отличного от SQL Server. Аргумент publisher имеет тип sysname и значение по умолчанию NULL.

    ПримечаниеПримечание

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

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

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

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

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

Разрешения

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

Пример

-- 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'AdventureWorks2008R2'; 
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