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,默认值为 10 指定 SQL Server 身份验证,1 指定 Windows 身份验证。对于非 SQL Server 发布服务器,必须将该值指定为 0

  • [ @publisher_login= ] 'publisher_login'
    连接到发布服务器时所使用的登录名。publisher_login 的数据类型为 sysname,默认值为 NULL。如果 publisher_security_mode 为 0,则必须指定 publisher_login。如果 publisher_login 的值为 NULL 且 publisher_security_mode 的值为 1,则连接到发布服务器时,将使用 job_login 中指定的 Windows 帐户。

  • [ @publisher_password= ] 'publisher_password'
    连接到发布服务器时所用的密码。publisher_password 的数据类型为 sysname,默认值为 NULL。

    安全说明安全说明

    请不要将身份验证信息存储在脚本文件中。为保证安全性,应当在运行时再提供登录名和密码。

  • [ @publisher= ] 'publisher'
    非 SQL Server 发布服务器的名称。publisher 的数据类型为 sysname,默认值为 NULL。

    注意注意

    对于 SQL Server 发布服务器,无需指定此参数。

返回代码值

0(成功)或 1(失败)

注释

sp_addlogreader_agent 用于事务复制。

如果要在创建发布(该发布使用为复制而启用的数据库)之前,将该数据库升级到此 SQL Server 版本,则必须执行 sp_addlogreader_agent 以添加日志读取器代理。

权限

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