Replication Distribution Agent

S’applique à :SQL ServerAzure SQL Database

L’Agent de distribution de réplication est un fichier exécutable qui déplace l’instantané (pour la réplication d’instantané et la réplication transactionnelle) et les transactions contenues dans les tables de base de données de distribution (pour la réplication transactionnelle) vers les tables de destination au niveau des Abonnés.

Remarque

Les paramètres peuvent être spécifiés dans n'importe quel ordre. Lorsque les paramètres optionnels ne sont pas spécifiés, les valeurs des paramètres du Registre prédéfinis sur l'ordinateur local sont utilisées.

Syntaxe

  
distrib [-?]  
-Publisher server_name[\instance_name]  
-PublisherDB publisher_database  
-Subscriber server_name[\instance_name]  
-SubscriberDB subscriber_database   
[-AltSnapshotFolder alt_snapshot_folder_path]   
[-BcpBatchSize bcp_batch_size]  
[-CommitBatchSize commit_batch_size]  
[-CommitBatchThreshold commit_batch_threshold]  
[-Continuous]  
[-DefinitionFile def_path_and_file_name]  
[-Distributor distributor]  
[-DistributorLogin distributor_login]  
[-DistributorPassword distributor_password]  
[-DistributorSecurityMode [0|1]]  
[-EncryptionLevel [0|1|2]]  
[-ErrorFile error_path_and_file_name]  
[-ExtendedEventConfigFile configuration_path_and_file_name]  
[-FileTransferType [0|1]]  
[-FtpAddress ftp_address]  
[-FtpPassword ftp_password]   
[-FtpPort ftp_port]  
[-FtpUserName ftp_user_name]  
[-HistoryVerboseLevel [0|1|2|3]]  
[-Hostname host_name]  
[-KeepAliveMessageInterval keep_alive_message_interval_seconds]  
[-LoginTimeOut login_time_out_seconds]  
[-MaxBcpThreads]  
[-MaxDeliveredTransactions number_of_transactions]  
[-MessageInterval message_interval]  
[-MultiSubnetFailover [0|1]]
[-OledbStreamThreshold oledb_stream_threshold]  
[-Output output_path_and_file_name]  
[-OutputVerboseLevel [0|1|2]]  
[-PacketSize packet_size]  
[-PollingInterval polling_interval]  
[-ProfileName profile_name]  
[-Publication publication]  
[-QueryTimeOut query_time_out_seconds]  
[-QuotedIdentifier quoted_identifier]  
[-SkipErrors native_error_id [:...n]]  
[-SubscriberDatabasePath subscriber_path]  
[-SubscriberLogin subscriber_login]  
[-SubscriberPassword subscriber_password]  
[-SubscriberSecurityMode [0|1]]  
[-SubscriberType [0|1|3]]  
[-SubscriptionStreams [1|2|...64]]  
[-SubscriptionTableName subscription_table]  
[-SubscriptionType [0|1|2]]  
[-TransactionsPerHistory [0|1|...10000]]  
[-UseDTS]  
[-UseInprocLoader]  
[-UseOledbStreaming]  

Arguments

-?
Imprime tous les paramètres disponibles.

-Publisherserver_name[\instance_name]
Nom du serveur de publication. Spécifiez server_name pour l’instance par défaut de Microsoft SQL Server sur ce serveur. Spécifiez server_name instance_name\ pour une instance nommée de SQL Server sur ce serveur. Si votre base de données du serveur de publication se trouve dans un groupe de disponibilité Always On, le nom du serveur de publication principal d’origine est toujours reflété en raison de sp_redirect_publisher. Elle ne reflète pas le nom de l’écouteur du GA.

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

-Subscriberserver_name[\instance_name]
Nom de l'Abonné. Spécifiez server_name pour 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. Si la base de données de votre abonné se trouve dans un groupe de disponibilité Always On, elle doit refléter le nom de l’écouteur du GA.

-SubscriberDBsubscriber_database
Nom de la base de données de l'Abonné.

-AltSnapshotFolderalt_snapshot_folder_path
Chemin d'accès au dossier contenant l'instantané initial pour un abonnement.

-BcpBatchSizebcp_batch_size
Nombre de lignes à envoyer dans une opération de copie en bloc. Lorsque vous effectuez une opération bcp in , la taille du lot correspond au nombre de lignes à envoyer au serveur en une transaction, mais aussi au nombre de lignes à envoyer avant que l'Agent de distribution ne journalise un message de progression bcp . Lorsque vous effectuez une opération bcp out , une taille de lot fixe de 1000 est utilisée.

-CommitBatchSizecommit_batch_size
Nombre de transactions à délivrer à l'Abonné avant l'émission d'une instruction COMMIT. La valeur par défaut est 100 et la valeur maximale est 10 000. Ce paramètre est ignoré lorsque le instantané est appliqué à l’abonné par le Agent de distribution.

-CommitBatchThresholdcommit_batch_threshold
Nombre de commandes de réplication à délivrer à l'Abonné avant l'émission d'une instruction COMMIT. La valeur par défaut est 1 000 et la valeur maximale est 10 000. Ce paramètre est ignoré lorsque le instantané est appliqué à l’abonné par le Agent de distribution.

-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 de la source à des fréquences d'interrogation définies, même s'il n'y a pas de transactions en attente.

-DefinitionFiledef_path_and_file_name
Chemin d'accès du fichier de définition d'agent. Un fichier de définition d'agent contient des arguments d'invite de commandes 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.

-Distributordistributor
Nom du serveur de distribution. Pour la distribution du serveur de distribution (transmission de type push), le nom a comme valeur par défaut le nom du serveur de distribution local. Si la base de données de votre distributeur se trouve dans un groupe de disponibilité Always On, elle doit refléter le nom de l’écouteur du GA.

-DistributorLogindistributor_login
Nom de connexion du serveur de distribution.

-DistributorPassworddistributor_password
Mot de passe du serveur de distribution.

-DistributorSecurityMode [ 0| 1]
Spécifie le mode de sécurité du serveur de distribution. La valeur 0 indique le mode d’authentification SQL Server, et la valeur 1 indique le mode d’authentification Windows (par défaut).

-EncryptionLevel [ 0 | 1 | 2 ]
Niveau du chiffrement du protocole TLS (Transport Layer Security), anciennement SSL (Secure Sockets Layer), utilisé par l'Agent de distribution lors de l'établissement de connexions.

Valeur EncryptionLevel Description
0 Spécifie que le chiffrement TLS n'est pas utilisé.
1 Spécifie que le chiffrement TLS/SSL est utilisé, mais que l'agent ne vérifie pas si le certificat de serveur TLS/SSL est signé par un émetteur de confiance.
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 puisse se connecter lorsque vous définissez EncryptionLevel sur 2, créez un alias sur l’instance locale de SQL Server. 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 Afficher et modifier les paramètres de sécurité de la réplication.

-ErrorFileerror_path_and_file_name
Chemin d'accès et nom du fichier d'erreurs généré par l'Agent de distribution. Ce fichier est généré là où une erreur s'est produite lors de l'application de transactions de réplication sur l'Abonné ; les erreurs se produisant sur le serveur de publication ou de distribution ne sont pas journalisées dans ce fichier. Ce fichier contient les transactions de réplication ayant échoué, avec les messages d'erreur associés. S'il n'est pas spécifié, le fichier d'erreurs est créé dans le répertoire même de l'Agent de distribution. Le nom du fichier d'erreurs est le nom de l'Agent de distribution avec une extension .err. Si le nom de fichier spécifié existe, les messages d'erreur sont ajoutés au fichier. Ce paramètre peut contenir jusqu'à 256 caractères Unicode.

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

-FileTransferType [ 0| 1]
Spécifie le type de transfert de fichier. La valeur 0 indique la convention d'affectation des noms (UNC), tandis que la valeur 1 indique le protocole de transfert de fichiers (FTP).

-FtpAddressftp_address
Adresse réseau du service FTP du serveur de distribution. S'il n'est pas spécifié, DistributorAddress est utilisé. Si DistributorAddress n'est pas spécifié, Distributor est utilisé.

-FtpPasswordftp_password
Mot de passe de l'utilisateur utilisé pour la connexion au service FTP.

-FtpPortftp_port
Numéro de port du service FTP du serveur de distribution. S'il n'est pas spécifié, le numéro de port par défaut pour le service FTP (21) est utilisé.

-FtpUserNameftp_user_name
Nom d'utilisateur utilisé pour la connexion au service FTP. S'il n'est pas spécifié, anonymous est utilisé.

-HistoryVerboseLevel [ 0 | 1 | 2 | 3]
Spécifie la quantité d'informations d'historique journalisées pendant une opération de distribution. Vous pouvez réduire l'effet de la journalisation d'historique sur les performances en sélectionnant 1.

Valeur HistoryVerboseLevel Description
0 Les messages de progression sont écrits dans la console ou dans un fichier de sortie. Les enregistrements d'historique ne sont pas journalisés dans la base de données de distribution.
1 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.
3 Insère toujours de nouveaux enregistrements, sauf s'il s'agit de messages inactifs.

-Hostnamehost_name
Nom d'hôte utilisé pour la connexion au serveur de publication Ce paramètre peut contenir jusqu'à 128 caractères Unicode.

-KeepAliveMessageIntervalkeep_alive_message_interval_seconds
Durée en secondes au terme de laquelle le thread d'historique doit vérifier 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 distribution comme suspect lors de l'exécution d'un lot de longue durée. La valeur par défaut est 300 secondes.

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

-MaxBcpThreadsnumber_of_threads
Spécifie le nombre d'opérations de copie en bloc pouvant être effectuées en parallèle. Le nombre maximal de threads et de connexions ODBC pouvant exister simultanément est, en privilégiant la valeur la plus petite, MaxBcpThreads ou le nombre de demandes de copie en bloc qui apparaissent dans la transaction de synchronisation dans la base de données de distribution. MaxBcpThreads doit avoir une valeur supérieure à 0 et n'a aucune limite supérieure codée en dur. La valeur par défaut est 2 fois le nombre de processeurs, la valeur maximale étant de 8. Lors de l’application d’une capture instantanée qui a été générée au niveau du serveur de publication à l’aide de l’option de capture instantanée simultanée, un seul thread est utilisé, quel que soit le nombre que vous spécifiez pour MaxBcpThreads.

-MaxDeliveredTransactionsnumber_of_transactions
Nombre maximal de transactions par émission ou par extraction appliquées aux Abonnés dans le cadre d'une synchronisation. La valeur 0 indique que la valeur maximale est un nombre infini de transactions. D'autres valeurs peuvent être utilisées par les Abonnés pour réduire la durée d'une synchronisation qui est extraite d'un serveur de publication.

Remarque

Si - MaxDeliveredTransactions et - Continuous sont tous les deux spécifiés, l'Agent de distribution remet le nombre spécifié de transactions puis arrête (bien que - Continuous soit spécifié). Vous devez redémarrer l'Agent de distribution une fois le travail terminé.

-MessageIntervalmessage_interval
Intervalle de temps utilisé pour la journalisation d'historique. Un événement d'historique est journalisé lorsque l'un de ces paramètres est atteint :

  • La valeur TransactionsPerHistory est atteinte après la journalisation du dernier événement d’historique.

  • La valeur MessageInterval est atteinte après la journalisation du dernier événement d’historique.

Si aucune transaction répliquée n'est disponible à la source, l'agent signale un message de non-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 Spécifie si la propriété MultiSubnetFailover est activée ou non. Si votre application se connecte à un groupe de disponibilité Always On (AG) sur différents sous-réseaux, la définition de MultiSubnetFailover=true permet une détection et une connexion plus rapides au serveur actif (actuellement).
S’applique à : SQL Server (à partir de SQL Server 2019 (15.x)).

-OledbStreamThresholdoledb_stream_threshold
Spécifie la taille minimale des données des objets blob, en octets, au-delà de laquelle les données seront liées sous la forme d'un flux. Vous devez spécifier -UseOledbStreaming pour utiliser ce paramètre. Les valeurs peuvent être comprises entre 400 et 1 048 576 octets, la valeur par défaut étant de 16 384 octets.

-Outputoutput_path_and_file_name
Chemin d'accès du fichier de sortie de l'agent. Si le nom du fichier n'est pas spécifié, 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]
Spécifie si la sortie doit être en clair. Si le niveau de détail est 0, seuls les messages d'erreur sont imprimés. Si le niveau de détail est 1, tous les messages du rapport de progression sont imprimés. Si le niveau de détail est 2 (valeur par défaut), tous les messages d'erreur et tous les messages du rapport de progression sont imprimés, ce qui peut s'avérer utile lors du débogage.

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

-PollingIntervalpolling_interval_
Fréquence, en secondes, à laquelle la base de données de distribution est interrogée au sujet des transactions répliquées. La valeur par défaut est 5 secondes.

-ProfileNameprofile_name
Spécifie un profil d'agent à utiliser pour les paramètres d'agent. Si ProfileName a la valeur NULL, le profil d'agent est désactivé. Si ProfileName 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.

-Publicationpublication
Nom de la publication. Ce paramètre est uniquement valide si la publication est configurée de telle sorte qu'un instantané soit toujours disponible pour les nouveaux abonnements ou les abonnements réinitialisés.

-QueryTimeOutquery_time_out_seconds
Nombre de secondes avant l’expiration de la requête. La valeur par défaut est 1800 secondes.

-QuotedIdentifierquoted_identifier
Spécifie le caractère de l'identificateur entre guillemets à utiliser. Le premier caractère de la valeur indique la valeur utilisée par l'Agent de distribution. Si QuotedIdentifier est utilisé sans valeur, l’Agent de distribution utilise un espace. Si QuotedIdentifier n’est pas utilisé, l’Agent de distribution utilise n’importe quel identificateur entre guillemets pris en charge par l’Abonné.

-SkipErrorsnative_error_id [:...n]
Liste séparée par des virgules spécifiant les numéros d'erreur à ignorer par cet agent. Ce paramètre est ignoré lorsque le instantané est appliqué à l’abonné par le Agent de distribution.

-SubscriberDatabasePathsubscriber_database_path
Chemin d'accès à la base de données Jet (fichier .mdb) si SubscriberType a la valeur 2 (autorise une connexion à une base de données Jet sans nom de la source de données ODBC).

-SubscriberLoginsubscriber_login
Nom de connexion de l'Abonné. Si SubscriberSecurityMode est 0 (pour l’authentification SQL Server), ce paramètre doit être spécifié.

-SubscriberPasswordsubscriber_password
Mot de passe de l'Abonné. Si SubscriberSecurityMode est 0 (pour l’authentification SQL Server), ce paramètre doit être spécifié.

-SubscriberSecurityMode [ 0| 1]
Spécifie le mode de sécurité de l'Abonné. La valeur 0 indique l’authentification SQL Server, et la valeur 1 indique le mode d’authentification Windows (par défaut).

-SubscriberType [ 0| 1| 3]
Spécifie le type de connexion d'Abonné utilisé par l'Agent de distribution.

Valeur SubscriberType Description
0 SQL Server
1 Source de données ODBC
3 Source de données OLE DB

-SubscriptionStreams [0|1|2|...64]
Nombre de connexions autorisées par l'Agent de distribution afin d'appliquer des lots de modifications en parallèle à un Abonné, tout en conservant bon nombre des caractéristiques transactionnelles présentes lors de l'utilisation d'un thread unique. Pour un serveur de publication SQL Server, une plage de valeurs comprises entre 1 et 64 est prise en charge. Ce paramètre est pris en charge uniquement lorsque le serveur de publication et le serveur de distribution s’exécutent sur SQL Server 2005 (9.x) ou les versions ultérieures. Ce paramètre n’est pas pris en charge ou doit être égal à 0 pour les abonnés non-SQL Server ou les abonnements d’égal à égal. Ce paramètre est ignoré lorsque le instantané est appliqué à l’abonné par le Agent de distribution.

Remarque

Si l'une des connexions ne réussit pas à s'exécuter ou n'est pas validée, toutes les connexions abandonneront le lot actuel, et l'Agent utilisera un flux unique pour une nouvelle tentative sur les lots ayant échoué. Avant que cette phase de nouvelle tentative ne se termine, il peut se produire des incohérences transactionnelles temporaires sur l'Abonné. Une fois que les lots ayant échoué sont validés avec succès, l'Abonné retrouve un état de cohérence transactionnelle.

Important

Lorsque vous spécifiez une valeur égale ou supérieure à 2 pour -SubscriptionStreams, l’ordre dans lequel les transactions sont reçues au niveau de l’Abonné peut différer de l’ordre dans lequel elles ont été créées au niveau du serveur de publication. Si ce comportement provoque des violations de contrainte pendant la synchronisation, vous devez utiliser l'option NOT FOR REPLICATION pour désactiver l'application de contraintes pendant la synchronisation. Pour plus d’informations, consultez Contrôler le comportement de déclencheurs et de contraintes au cours de la synchronisation (programmation Transact-SQL de la réplication).

Remarque

Les flux d’abonnement ne fonctionnent pas pour les articles configurés pour fournir Transact-SQL. Pour utiliser les flux d'abonnements, configurez les articles afin qu'ils fournissent des appels de procédures stockées à la place.

-SubscriptionTableNamesubscription_table
Nom de la table d'abonnements générée ou a utilisée au niveau de l'Abonné donné. Lorsqu’elle n’est pas spécifiée, la table MSreplication_subscriptions (Transact-SQL) est utilisée. Utilisez cette option pour les systèmes de gestion de base de données (SGBD) qui ne prennent pas en charge les noms de fichier longs.

-SubscriptionType [ 0| 1| 2]
Spécifie le type d'abonnement pour la distribution. La valeur 0 indique un abonnement par émission de données, la valeur 1 un abonnement par extraction et la valeur 2 un abonnement anonyme.

-TransactionsPerHistory [ 0| 1|... 10000]
Spécifie l'intervalle de transaction pour la journalisation d'historique. Si le nombre de transactions validées après la dernière instance de journalisation d'historique est supérieur à cette option, un message d'historique est journalisé. La valeur par défaut est 100. Une valeur de 0 indique une quantité infinie de TransactionsPerHistory. See the preceding –MessageIntervalparameter.

-UseDTS
Doit être spécifié en tant que paramètre pour une publication qui autorise la transformation de données.

-UseInprocLoader
Améliore les performances de l'instantané initial en forçant l'Agent de distribution à utiliser la commande BULK INSERT lors de l'application des fichiers d'instantané à l'Abonné. Ce paramètre est déconseillé parce qu'il n'est pas compatible avec le type de données XML. Si vous ne répliquez pas de données XML, ce paramètre peut être utilisé. Ce paramètre ne peut pas être utilisé avec le mode caractère instantané s ou les abonnés non-SQL Server. Si vous utilisez ce paramètre, le compte de service SQL Server sur l’Abonné doit disposer d’autorisations de lecture sur le répertoire où se trouvent les fichiers de données .bcp instantané. Lorsque ce paramètre n’est pas utilisé, l’agent (pour les abonnés non-SQL Server) ou le pilote ODBC chargé par l’agent (pour les abonnés SQL Server) lit les fichiers, de sorte que le contexte de sécurité du compte de service SQL Server n’est pas utilisé.

-UseOledbStreaming
S'il est spécifié, active la liaison des données des objets blob sous la forme d'un flux. Utilisez -OledbStreamThreshold pour spécifier la taille, en octets, au-dessus de laquelle un flux sera utilisé. UseOledbStreaming est activé par défaut.

Remarque

À compter de SQL 2017 CU22 et versions ultérieures (y compris SQL 2019 RTM), UseOledbStreaming écrit dans le dossier c :\Users\<DistributionAgentAccount>\AppData\Temp .

Avant SQL 2017 CU22, UseOledbStreaming écrit dans le dossier C :\Program Files\Microsoft SQL Server\<version>\COM .

Notes

Important

Si vous avez installé SQL Server Agent pour s’exécuter sous un compte système local plutôt que sous un compte d’utilisateur de domaine (la valeur par défaut), le service ne peut accéder qu’à l’ordinateur local. Si le Agent de distribution qui s’exécute sous SQL Server Agent est configuré pour utiliser le mode d’authentification Windows lorsqu’il se connecte à une instance de SQL Server, le Agent de distribution é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 distribution, exécutez distrib.exe à l’invite de commandes. Pour plus d’informations, consultez Concepts des exécutables de l’agent de réplication.

Historique des modifications

Mise à jour du contenu
Ajout du paramètre ExtendedEventConfigFile .
Ajout du paramètre -MultiSubnetFailover.

Voir aussi

Administration de l’Agent de réplication