Compartir vía


Agente de registro del LOG de replicación

Se aplica a: SQL Server Azure SQL Managed Instance

La réplica Agente Lector de Registros es un ejecutable que supervisa el registro de transacciones de cada base de datos configurada para la replicación transaccional y copia las transacciones marcadas para su replicación desde el registro de transacciones a la base de datos de distribución.

Nota:

Los parámetros se pueden especificar en cualquier orden. Cuando no se especifican parámetros opcionales, se usan valores predefinidos basados en el perfil de agente predeterminado.

Sintaxis

logread [ -? ]
-Publisher server_name [ \instance_name ]
-PublisherDB publisher_database
[ -Continuous ]
[ -DefinitionFile def_path_and_file_name ]
[ -Distributor server_name[ \instance_name ] ]
[ -DistributorLogin distributor_login ]
[ -DistributorPassword distributor_password ]
[ -DistributorSecurityMode [ 0 | 1 ] ]
[ -EncryptionLevel [ 0 | 1 | 2 ] ]
[ -ExtendedEventConfigFile configuration_path_and_file_name ]
[ -HistoryVerboseLevel [ 0 | 1 | 2 ] ]
[ -KeepAliveMessageInterval keep_alive_message_interval_seconds ]
[ -LoginTimeOut login_time_out_seconds ]
[ -LogScanThreshold scan_threshold ]
[ -MaxCmdsInTran number_of_commands ]
[ -MessageInterval message_interval ]
[ -MultiSubnetFailover [ 0 | 1 ] ]
[ -Output output_path_and_file_name ]
[ -OutputVerboseLevel [ 0 | 1 | 2 | 3 | 4 ] ]
[ -PacketSize packet_size ]
[ -PollingInterval polling_interval ]
[ -ProfileName profile_name ]
[ -PublisherFailoverPartner server_name[ \instance_name ] ]
[ -PublisherSecurityMode [ 0 | 1 ] ]
[ -PublisherLogin publisher_login ]
[ -PublisherPassword publisher_password ]
[ -QueryTimeOut query_time_out_seconds ]
[ -ReadBatchSize number_of_transactions ]
[ -ReadBatchThreshold read_batch_threshold ]
[ -RecoverFromDataErrors ]

Argumentos

-?

Muestra información de uso.

-Publisher server_name [ \instance_name ]

El nombre del publicador. Especifique <server_name> para la instancia predeterminada de SQL Server en ese servidor. Especifique <server_name>\<instance_name> para una instancia con nombre de SQL Server en ese servidor.

-PublisherDB publisher_database

Nombre de la base de datos del publicador.

-Continuous

Especifica si el agente intenta sondear las transacciones replicadas continuamente. Si se especifica, el agente sondea las transacciones replicadas del origen en intervalos de sondeo, aunque no haya ninguna transacción pendiente.

-DefinitionFile def_path_and_file_name

Ruta de acceso del archivo de definición del agente. Un archivo de definición de agente contiene los argumentos de línea de comandos para el agente. El contenido del archivo se analiza como un archivo ejecutable. Use comillas dobles (") para especificar valores de argumento que contengan caracteres arbitrarios.

-Distributor server_name [ \instance_name ]

Nombre del distribuidor. Especifique <server_name> para la instancia predeterminada de SQL Server en ese servidor. Especifique <server_name>\<instance_name> para una instancia con nombre de SQL Server en ese servidor.

-DistributorLogin distributor_login

Nombre de inicio de sesión del distribuidor.

-DistributorPassword distributor_password

Contraseña del distribuidor.

-DistributorSecurityMode [ 0 | 1 ]

Especifica el modo de seguridad del distribuidor. Un valor de indica el modo de autenticación de 0 SQL Server (valor predeterminado) y un valor de indica el modo de autenticación de 1 Windows.

-EncryptionLevel [ 0 | 1 | 2 ]

Nivel de seguridad de la capa de transporte (TLS), anteriormente conocido como Capa de sockets seguros (SSL), cifrado que usa el Agente de registro del log al realizar conexiones.

Valor de EncryptionLevel Descripción
0 Especifica que no se usa TLS.
1 Especifica que se usa TLS, pero el agente no comprueba que el certificado de servidor TLS esté firmado por un emisor de confianza.
2 Especifica que se usa TLS y que se ha comprobado el certificado.

Nota:

Un certificado TLS/SSL válido se define con un nombre de dominio completo de SQL Server. Para que el agente se conecte correctamente al establecer -EncryptionLevel 2en , cree un alias en el servidor SQL Server local. El parámetro "Alias Name" debe ser el nombre del servidor, mientras que el parámetro "Server" se debe establecer en el nombre completo de la instancia de SQL Server.

Para más información, consulte View and Modify Replication Security Settings.

-ExtendedEventConfigFile configuration_path_and_file_name

Especifica el nombre y la ruta del archivo para el archivo de configuración XML de eventos extendidos. El archivo de configuración de eventos extendidos le permite configurar sesiones y habilitar eventos para su seguimiento. Solo para uso interno.

-HistoryVerboseLevel [ 0 | 1 | 2 ]

Especifica la cantidad de historial registrado durante una operación del lector de registro. Para minimizar el efecto de rendimiento del registro del historial, seleccione 1.

Valor HistoryVerboseLevel Descripción
0 Ninguno.
1 (valor predeterminado) Siempre actualiza un mensaje del historial anterior del mismo estado (inicio, progreso, éxito, etc.). Si no existe ningún registro anterior con el mismo estado, inserta un nuevo registro.
2 Inserta nuevos registros de historial a menos que el registro sea para mensajes de inactividad o mensajes de trabajos de ejecución prolongada, en cuyo caso actualiza los registros anteriores.

-KeepAliveMessageInterval keep_alive_message_interval_seconds

El número de segundos antes de que el subproceso del historial compruebe si alguna de las conexiones existentes está esperando una respuesta del servidor. Este valor se puede reducir para evitar que la comprobación del agente marque al agente de registro del LOG como sospechoso al ejecutar un lote de ejecución prolongada. El valor predeterminado es 300 segundos.

-LoginTimeOut login_time_out_seconds

Número de segundos antes de que se agote el tiempo de espera del inicio de sesión. El valor predeterminado es 15 segundos.

-LogScanThreshold scan_threshold

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

-MaxCmdsInTran number_of_commands

Especifica el número máximo de instrucciones agrupadas en una transacción cuando el Agente de registro del LOG escribe comandos en la base de datos de distribución. El uso de este parámetro permite al Agente de registro del LOG y al Agente de distribución dividir las transacciones grandes (compuestas por muchos comandos) del publicador en varias transacciones más pequeñas cuando se aplican en el suscriptor. Especificando este parámetro se puede reducir la contención en el distribuidor y la latencia entre el publicador y el suscriptor. Dado que la transacción original se aplica en unidades más pequeñas, el suscriptor puede tener acceso a filas de una transacción de publicador lógico grande antes del final de la transacción original, lo que rompe la atomicidad transaccional estricta. El valor predeterminado es 0, que conserva los límites de transacción del publicador.

Este parámetro se omite para publicaciones que no son de SQL Server. Para obtener más información, consulte Configuración del trabajo del conjunto de transacciones.

MaxCmdsInTran no estaba diseñado para estar siempre activado. Funciona en los casos en los que alguien realizó accidentalmente un gran número de operaciones DML en una sola transacción. Esto provoca un retraso en la distribución de comandos, hasta que toda la transacción se encuentra en la base de datos de distribución, los bloqueos que se mantienen, etc. Si habitualmente entra en esta situación, revise las aplicaciones y busque formas de reducir el tamaño de la transacción.

Advertencia

Es posible que se produzcan errores de clave principal si se agrega y quita el MaxCmdsInTran parámetro al replicar una transacción grande. MaxCmdsInTran no se admite si la base de datos de publicación especificada tiene habilitada la captura de datos modificados (CDC) y la replicación. El uso MaxCmdsInTran de esta configuración puede provocar la pérdida de datos en las tablas de cambios CDC.

-MessageInterval message_interval

Intervalo de tiempo usado para el registro del historial. Se registra un evento de historial cuando se alcanza el MessageInterval valor después de registrar el último evento de historial.

Si no hay ninguna transacción replicada disponible en el origen, el agente notifica un mensaje sin transacción al distribuidor. Esta opción especifica cuánto tiempo espera el agente para enviar otro mensaje que indica que no hay ninguna transacción. Los agentes siempre envían un mensaje que indica que no hay ninguna transacción cuando detectan que no hay ninguna transacción disponible en el origen después de procesar previamente las transacciones replicadas. El valor predeterminado es 60 segundos.

-MultiSubnetFailover [ 0 | 1 ]

Se aplica a: SQL Server 2019 (15.x) y versiones posteriores.

Especifica si la propiedad MultiSubnetFailover está habilitada o no. En un grupo de disponibilidad (AG) Always On en subredes diferentes, al establecer MultiSubnetFailover en 1 (true), se detecta más rápidamente el servidor (actualmente) activo y se acelera la conexión a este.

Al configurar una publicación transaccional en un grupo de disponibilidad, el Agente de registro del log crea un servidor vinculado dinámico para que el agente de escucha compruebe los metadatos. En SQL Server 2022 (16.x) CU 10 y versiones posteriores, hay un cambio en la configuración del servidor vinculado dinámico. Para más información, consulte KB5031778.

-Output output_path_and_file_name

Ruta de acceso del archivo de salida del agente. Si no se proporciona el nombre de archivo, la salida se envía a la consola. Si el nombre de archivo especificado existe, el resultado se anexa al archivo.

-OutputVerboseLevel [ 0 | 1 | 2 | 3 | 4 ]

Especifica si el resultado debería ser detallado.

Valor Descripción
0 Solo se imprimen los mensajes de error.
1 Se imprimen todos los mensajes de informe de progreso de agente.
2 (valor predeterminado) Se imprimen todos los mensajes de error y mensajes de informe de progreso de agente.
3 Se imprimen los primeros 100 bytes de cada comando replicado.
4 Se imprimen todos los comandos replicados.

Valora 2-4 son útiles al depurar.

-PacketSize packet_size

Tamaño del paquete, en bytes. El valor predeterminado es 4096 (bytes).

-PollingInterval polling_interval

Con qué frecuencia, en segundos, se consulta el registro para las transacciones replicadas. El valor predeterminado es 5 segundos.

-ProfileName profile_name

Especifica un perfil de agente para utilizar para los parámetros del agente. Si ProfileName es NULL, el perfil del agente está deshabilitado. Si ProfileName no se especifica, se usa el perfil predeterminado para el tipo de agente. Para obtener información, vea Perfiles del Agente de replicación.

-PublisherFailoverPartner server_name [ \instance_name ]

Especifica la instancia del asociado de conmutación por error de SQL Server que participa en una sesión de creación de reflejo de la base de datos con la base de datos de publicación. Para obtener más información, vea Replicación y creación de reflejo de la base de datos (SQL Server).

-PublisherSecurityMode [ 0 | 1 ]

Especifica el modo de seguridad del publicador. Un valor de indica autenticación de 0 SQL Server (valor predeterminado) y un valor de indica el modo de autenticación de 1 Windows.

-PublisherLogin publisher_login

Nombre de inicio de sesión del publicador.

-PublisherPassword publisher_password

Contraseña del publicador.

-QueryTimeOut query_time_out_seconds

Número de segundos antes de que se agote el tiempo de espera de la consulta. El valor predeterminado es 1800 segundos.

-ReadBatchSize number_of_transactions

El número máximo de transacciones leídas fuera del registro de transacciones de la base de datos de publicación por ciclo de procesamiento, con un valor predeterminado de 500 y un máximo de 10000. El agente continúa leyendo transacciones en lotes hasta que todas las transacciones se leen del registro. Este parámetro no se admite para publicadores de Oracle.

-ReadBatchThreshold number_of_commands

Número de comandos de replicación que se van a leer del registro de transacciones antes de emitirlos al suscriptor por el Agente de distribución. El valor predeterminado es 0. Si no se especifica este parámetro, el Agente de registro del log lee al final del registro o al número especificado en -ReadBatchSize (número de transacciones).

-RecoverFromDataErrors

Especifica que el Agente de registro del LOC continúe ejecutándose cuando encuentra errores en datos de columna publicados en un Publicador que no es de SQL Server. De forma predeterminada, tales errores hacen el Agente de registro del LOG devuelva un error. Cuando se usa -RecoverFromDataErrors, los datos de columna erróneos se replican como o como NULL un valor no NULL adecuado y los mensajes de advertencia se registran en la tabla de MSlogreader_history . Este parámetro solamente se admite en publicadores de Oracle.

Comentarios

Si ha instalado el agente de SQL Server para que se ejecute en una cuenta de sistema local en lugar de debajo de una cuenta de usuario de dominio (el valor predeterminado), el servicio puede tener acceso solamente al equipo local. Si el Agente de registro del LOG que se ejecuta en el agente de SQL Server se configura para utilizar el modo de autenticación de Windows cuando inicia sesión en una instancia de SQL Server, el Agente de registro del LOC devuelve un error. La configuración predeterminada es la autenticación de SQL Server. Para obtener más información acerca de cómo cambiar cuentas de seguridad, vea View and Modify Replication Security Settings.

Para iniciar el Agente de registro del Log Reader, ejecute logread.exe desde el símbolo del sistema. Para obtener información, vea Conceptos de los ejecutables del Agente de replicación.