Partager via


Agent de lecture du journal des réplications

S’applique à : SQL Server Azure SQL Managed Instance

L’Agent de lecture du journal des réplications est un fichier exécutable qui analyse le journal des transactions de chaque base de données configurée pour la réplication transactionnelle, et qui copie les transactions devant être répliquées à partir du journal des transactions dans la base de données de distribution.

Remarque

Les paramètres peuvent être spécifiés dans n'importe quel ordre. Lorsque les paramètres facultatifs ne sont pas spécifiés, les valeurs prédéfinies basées sur le profil d’agent par défaut sont utilisées.

Syntaxe

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 ]

Arguments

-?

Affiche des informations sur l’utilisation.

-Publisher server_name [ \instance_name ]

Nom du serveur de publication. Spécifiez <server_name> l’instance par défaut de SQL Server sur ce serveur. Spécifiez <server_name>\<instance_name> pour une instance nommée de SQL Server sur ce serveur.

-PublisherDB publisher_database

Nom de la base de données du serveur de publication.

-Continuous

Spécifie si l'Agent tente d'interroger les transactions répliquées de manière continue. S'il est spécifié, l'Agent interroge les transactions répliquées à partir de la source à des fréquences d'interrogation définies, même s'il n'y a pas de transactions en attente.

-DefinitionFile def_path_and_file_name

Chemin d’accès du fichier de définition de l’agent. Un fichier de définition d'agent contient des arguments de ligne de commande pour l'agent. Le contenu du fichier est analysé en tant que fichier exécutable. Utilisez des guillemets doubles (") pour spécifier des valeurs d’argument qui contiennent des caractères arbitraires.

-Serveur de distribution server_name [ \instance_name ]

Nom du serveur de distribution. Spécifiez <server_name> l’instance par défaut de SQL Server sur ce serveur. Spécifiez <server_name>\<instance_name> pour une instance nommée de SQL Server sur ce serveur.

-DistributorLogin distributor_login

Nom de connexion du serveur de distribution.

-DistributorPassword distributor_password

Mot de passe du serveur de distribution.

-DistributorSecurityMode [ 0 | 1 ]

Spécifie le mode de sécurité du serveur de distribution. Valeur indiquant 0 le mode d’authentification SQL Server (par défaut) et une valeur indiquant 1 le mode d’authentification Windows.

-EncryptionLevel [ 0 | 1 | 2 ]

Niveau tls (Transport Layer Security), précédemment appelé SSL (Secure Sockets Layer), chiffrement utilisé par l’Agent de lecture du journal lors d’une connexion.

Valeur EncryptionLevel Description
0 Spécifie que TLS n’est pas utilisé.
1 Spécifie que TLS est utilisé, mais que l’agent ne vérifie pas que le certificat de serveur TLS est signé par un émetteur approuvé.
2 Spécifie que le chiffrement TLS est utilisé et que le certificat est vérifié.

Remarque

Un certificat TLS/SSL valide est défini avec le nom de domaine complet de l’instance SQL Server. Pour que l’agent se connecte correctement lors de la définition -EncryptionLevel 2, créez un alias sur le serveur SQL Server local. Le paramètre « Nom de l’alias » doit correspondre au nom du serveur, et le paramètre « Serveur » doit être défini sur le nom complet de l’instance SQL Server.

Pour plus d’informations, consultez View and Modify Replication Security Settings.

-ExtendedEventConfigFile configuration_path_and_file_name

Spécifie le chemin d'accès et le nom du fichier de configuration XML d'événements étendus. Le fichier de configuration d'événements étendu vous permet de configurer des sessions et d'activer des événements pour le suivi. Utilisation interne uniquement.

-HistoryVerboseLevel [ 0 | 1 | 2 ]

Spécifie la quantité d'informations d'historique journalisées pendant une opération du lecteur du journal. Vous pouvez réduire l’effet de performances de la journalisation de l’historique en sélectionnant 1.

Valeur HistoryVerboseLevel Description
0 Aucune.
1 (valeur par défaut) Met toujours à jour un message d'historique précédent du même état (démarrage, progression, succès, et ainsi de suite). Si aucun enregistrement précédent du même état n'existe, insère un nouvel enregistrement.
2 Insère de nouveaux enregistrements d'historique, sauf s'il s'agit d'un enregistrement concernant notamment un message inactif ou un message de travail de longue durée, auquel cas les enregistrements précédents sont mis à jour.

-KeepAliveMessageInterval keep_alive_message_interval_seconds

Nombre de secondes avant que le thread d’historique vérifie si l’une des connexions existantes attend une réponse du serveur. Vous pouvez réduire cette valeur pour éviter que l'agent de vérification ne marque l'Agent de lecture du journal comme suspect lors de l'exécution d'un lot de longue durée. La valeur par défaut est 300 secondes.

-LoginTimeOut login_time_out_seconds

Nombre de secondes avant l’expiration de la connexion. La valeur par défaut est de 15 secondes.

-LogScanThreshold scan_threshold

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

-MaxCmdsInTran number_of_commands

Indique le nombre maximal d'instructions groupées dans une transaction lorsque le Lecteur du journal enregistre des commandes sur la base de données de distribution. L'utilisation de ce paramètre permet à l'Agent de lecture du journal et à l'Agent de distribution de scinder les transactions importantes (constituées de plusieurs commandes) sur le serveur de publication en plusieurs transactions plus petites lors de leur application sur l'Abonné. La spécification de ce paramètre permet de réduire les contentions sur le serveur de distribution et de réduire la latence entre le serveur de publication et l'Abonné. Étant donné que la transaction d’origine est appliquée en unités plus petites, l’Abonné peut accéder aux lignes d’une transaction de serveur de publication logique volumineuse avant la fin de la transaction d’origine, ce qui interrompt l’atomicité transactionnelle stricte. La valeur par défaut est 0, qui conserve les limites de transaction du serveur de publication.

Ce paramètre est ignoré pour les publications autres que SQL Server. Pour plus d’informations, consultez Configuration du travail du jeu de transactions.

MaxCmdsInTran n’a pas été conçu pour être toujours activé. Cela fonctionne dans les cas où une personne a effectué accidentellement un grand nombre d’opérations DML dans une seule transaction. Cela entraîne un retard dans la distribution des commandes, jusqu’à ce que la transaction entière se trouve dans la base de données de distribution, que les verrous soient conservés, etc. Si vous rencontrez régulièrement cette situation, passez en revue vos applications et trouvez des moyens de réduire la taille des transactions.

Avertissement

Les erreurs de clé primaire peuvent se produire si le paramètre est ajouté et supprimé lors de la MaxCmdsInTran réplication d’une transaction volumineuse. Pour résoudre les erreurs de clé primaire sur les transactions volumineuses, ajoutez le MaxCmdsInTran paramètre jusqu’à ce que la transaction soit répliquée dans la base de données de distribution.

L’utilisation du MaxCmdsInTran paramètre sur une base de données avec capture de données modifiées (CDC) et la réplication activées n’est pas prise en charge et peut entraîner une perte de données dans les tables de modification cdc.

-MessageInterval message_interval

Intervalle de temps utilisé pour la journalisation de l’historique. Un événement d’historique est enregistré lorsque la MessageInterval valeur est atteinte une fois que le dernier événement d’historique est enregistré.

S’il n’existe aucune transaction répliquée disponible à la source, l’agent signale un message sans transaction au serveur de distribution. Cette option spécifie combien de temps l'agent doit attendre avant de signaler un autre message de non-transaction. Les agents signalent toujours un message de non-transaction lorsqu'ils détectent qu'aucune transaction n'est disponible à la source après avoir précédemment traité des transactions répliquées. La valeur par défaut est de 60 secondes.

-MultiSubnetFailover [ 0 | 1 ]

S’applique à : SQL Server 2019 (15.x) et versions ultérieures.

Spécifie si la propriété MultiSubnetFailover est activée ou non. Si votre application se connecte à un groupe de disponibilité Always On sur différents sous-réseaux, la définition de MultiSubnetFailover sur 1 (true) permet une détection et une connexion plus rapides au serveur actif (actuellement).

Lorsque vous configurez une publication transactionnelle sur un groupe de disponibilité, l’Agent de lecture du journal crée un serveur lié dynamique pour l’écouteur afin de vérifier les métadonnées. Dans SQL Server 2022 (16.x) CU 10 et versions ultérieures, il existe un changement dans la configuration du serveur lié dynamique. Pour plus d’informations, consultez KB5031778.

-Sortie output_path_and_file_name

Chemin d’accès du fichier de sortie de l’agent. Si le nom de fichier n’est pas fourni, la sortie est envoyée à la console. Si le nom de fichier spécifié existe, la sortie est ajoutée au fichier.

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

Spécifie si la sortie doit être en clair.

Valeur Description
0 Seuls les messages d'erreur sont imprimés.
1 Tous les messages du rapport de progression de l'agent sont imprimés.
2 (valeur par défaut) Tous les messages d'erreur et tous les messages du rapport de progression sont imprimés.
3 Les 100 premiers octets de chaque commande répliquée sont imprimés.
4 Toutes les commandes répliquées sont imprimées.

Les valeurs 2-4 sont utiles lors du débogage.

-PacketSize packet_size

Taille du paquet, en octets. La valeur par défaut est 4 096 octets.

-PollingInterval polling_interval

Fréquence à laquelle, en secondes, le journal est interrogé pour les transactions répliquées. La valeur par défaut est 5 secondes.

-ProfileName profile_name

Spécifie un profil d'agent à utiliser pour les paramètres d'agent. Si ProfileName c’est NULLle cas, le profil de l’agent est désactivé. Si ProfileName ce n’est pas spécifié, le profil par défaut du type d’agent est utilisé. Pour plus d’informations, consultez Profils de l’Agent de réplication.

-PublisherFailoverPartner server_name [ \instance_name ]

Spécifie l’instance de partenaire de basculement de SQL Server participant à une session de mise en miroir de bases de données avec la base de données de publication. Pour plus d’informations, consultez Mise en miroir de bases de données et réplication (SQL Server).

-PublisherSecurityMode [ 0 | 1 ]

Spécifie le mode de sécurité du serveur de publication. Valeur indiquant l’authentification 0 SQL Server (valeur par défaut) et une valeur indiquant 1 le mode d’authentification Windows.

-PublisherLogin publisher_login

Nom de connexion du serveur de publication.

-PublisherPassword publisher_password

Mot de passe du serveur de publication.

-QueryTimeOut query_time_out_seconds

Nombre de secondes avant l’expiration de la requête. La valeur par défaut est de 1 800 secondes.

-ReadBatchSize number_of_transactions

Nombre maximal de transactions lues dans le journal des transactions de la base de données de publication par cycle de traitement, avec une valeur par défaut de 500 et un maximum de 1 000. L’agent continue de lire les transactions par lots jusqu’à ce que toutes les transactions soient lues à partir du journal. Ce paramètre n’est pas pris en charge pour les serveurs de publication Oracle.

-ReadBatchThreshold number_of_commands

Nombre de commandes de réplication à lire à partir du journal des transactions avant d’être émises à l’Abonné par le Agent de distribution. La valeur par défaut est 0. Si ce paramètre n’est pas spécifié, l’Agent de lecture du journal lit à la fin du journal ou au nombre spécifié dans -ReadBatchSize (nombre de transactions).

-RecoverFromDataErrors

Spécifie que l'Agent de lecture du journal poursuit son exécution lorsqu'il rencontre des erreurs dans les données de colonne publiées à partir d'un serveur de publication non-SQL Server. Par défaut, de telles erreurs provoquent l'échec de l'Agent de lecture du journal. Lorsque vous utilisez -RecoverFromDataErrors, les données de colonne erronées sont répliquées en tant que NULL valeur non Null appropriée ou les messages d’avertissement sont enregistrés dans la table MSlogreader_history . Ce paramètre est uniquement pris en charge pour les serveurs de publication Oracle.

Notes

Si vous avez installé SQL Server Agent pour s’exécuter sous un compte système local au lieu d’un compte d’utilisateur de domaine (la valeur par défaut), le service peut accéder uniquement à l’ordinateur local. Si l’Agent de lecture du journal qui s’exécute sous SQL Server Agent est configuré pour utiliser le mode d’authentification Windows lorsqu’il se connecte à SQL Server, l’Agent de lecture du journal échoue. Le paramètre par défaut est l’authentification SQL Server. Pour plus d'informations sur la modification des comptes de sécurité, consultez View and Modify Replication Security Settings.

Pour démarrer l’Agent de lecture du journal, exécutez à logread.exe partir de l’invite de commandes. Pour plus d’informations, consultez Concepts des exécutables de l’agent de réplication.