sp_addlogreader_agent (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Agrega un Agente de registro del LOG a una base de datos dada. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.

Importante

Al configurar un publicador con un distribuidor remoto, los valores proporcionados para todos los parámetros, incluidos @job_login y @job_password, se envían al distribuidor como texto sin formato. Antes de ejecutar este procedimiento almacenado, se recomienda cifrar la conexión entre el publicador y su distribuidor remoto. Para más información, consulte Configuración del Motor de base de datos de SQL Server para el cifrado de las conexiones.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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' ]
[ ; ]

Argumentos

[ @job_login = ] N'job_login'

Inicio de sesión de la cuenta de Microsoft Windows con la que se ejecuta el agente. @job_login es nvarchar(257), con un valor predeterminado de NULL. Esta cuenta de Windows siempre se utiliza para conexiones del agente con el distribuidor. En Azure SQL Instancia administrada, use una cuenta de SQL Server.

Nota:

En el caso de los publicadores que no son de SQL Server, debe ser el mismo inicio de sesión especificado en sp_adddistpublisher (Transact-SQL).

[ @job_password = ] N'job_password'

Contraseña de la cuenta de Windows con la que se ejecuta el agente. @job_password es sysname, con un valor predeterminado de NULL.

Importante

No almacene información de autenticación en archivos de script. Para una mayor seguridad, los nombres de inicio de sesión y las contraseñas se deben proporcionar en tiempo de ejecución.

[ @job_name = ] N'job_name'

Nombre de un trabajo de agente existente. @job_name es sysname, con un valor predeterminado de NULL. Este parámetro solamente se especifica cuando se inicia el agente a partir de un trabajo existente, en lugar de hacerlo con un trabajo recién creado (el valor predeterminado).

[ @publisher_security_mode = ] publisher_security_mode

Nota:

El identificador de Microsoft Entra se conocía anteriormente como Azure Active Directory (Azure AD).

Modo de seguridad utilizado por el agente al conectarse al publicador. @publisher_security_mode es smallint, con un valor predeterminado de 1. Se debe especificar un valor de 0 para publicadores que no son de SQL Server. Los valores siguientes definen el modo de seguridad:

  • 0 especifica la autenticación de SQL Server.
  • 1especifica autenticación de Windows.
  • 2 especifica la autenticación con contraseña de Microsoft Entra a partir de SQL Server 2022 (16.x) CU 6.
  • 3 especifica la autenticación integrada de Microsoft Entra a partir de SQL Server 2022 (16.x) CU 6.
  • 4 especifica la autenticación de tokens de Microsoft Entra a partir de SQL Server 2022 (16.x) CU 6.

[ @publisher_login = ] N'publisher_login'

Inicio de sesión utilizado al conectar al publicador. @publisher_login es sysname, con un valor predeterminado de NULL. @publisher_login debe especificarse cuando @publisher_security_mode sea 0. Si @publisher_login es NULL y @publisher_security_mode es 1, la cuenta de Windows especificada en @job_login se usa al conectarse al publicador.

[ @publisher_password = ] N'publisher_password'

Contraseña usada al conectarse al publicador. @publisher_password es sysname, con un valor predeterminado de NULL.

Importante

No almacene información de autenticación en archivos de script. Para una mayor seguridad, los nombres de inicio de sesión y las contraseñas se deben proporcionar en tiempo de ejecución.

[ @publisher = ] N'publisher'

Nombre del publicador que no es de SQL Server. @publisher es sysname, con un valor predeterminado de NULL.

Nota:

No debe especificar este parámetro para un publicador de SQL Server.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

sp_addlogreader_agent se usa en la replicación transaccional.

Debe ejecutar sp_addlogreader_agent para agregar un agente de registro al actualizar una base de datos habilitada para la replicación a esta versión de SQL Server antes de crear una publicación que usó la base de datos.

Permisos

Solo los miembros del rol fijo de servidor sysadmin o el rol fijo de base de datos db_owner pueden ejecutar sp_addlogreader_agent.

Ejemplos

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