Replication Distribution Agent

S’applique à : SQL Server Azure 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 facultatifs ne sont pas spécifiés, les valeurs des paramètres de 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.

-Publisher server_name [ \instance_name ]

Nom du serveur de publication. Spécifiez <server_name> 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 d’éditeur se trouve dans un groupe de disponibilité (AG), cela reflète toujours le nom du serveur de publication principal d’origine en raison de sp_redirect_publisher. Il ne reflète pas le nom de l’écouteur du groupe de disponibilité.

-PublisherDB publisher_database

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

-Abonné server_name [ \instance_name ]

Nom de l'Abonné. 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. Si votre base de données d’abonné se trouve dans un groupe de disponibilité, cela doit refléter le nom de l’écouteur du groupe de disponibilité.

-SubscriberDB subscriber_database

Nom de la base de données de l’Abonné.

-AltSnapshotFolder alt_snapshot_folder_path

Chemin d’accès au dossier qui contient l’instantané initial d’un abonnement.

-BcpBatchSize bcp_batch_size

Nombre de lignes à envoyer dans une opération de copie en bloc. Lorsque vous effectuez une bcp in opération, la taille du lot est le nombre de lignes à envoyer au serveur en tant que transaction unique, ainsi que le nombre de lignes qui doivent être envoyées avant que le Agent de distribution journalise un message de progression bcp. Lorsque vous effectuez une bcp out opération, une taille de 1000 lot fixe est utilisée.

-CommitBatchSize commit_batch_size

Nombre de transactions à émettre sur 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 l’instantané est appliqué à l’abonné par le Agent de distribution.

-CommitBatchThreshold commit_batch_threshold

Nombre de commandes de réplication à émettre à 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 l’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.

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

-Serveur de distribution

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 votre base de données de distribution se trouve dans un groupe de disponibilité, cela doit refléter le nom de l’écouteur du groupe de disponibilité.

-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. 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 tls (Transport Layer Security), précédemment appelé SSL (Secure Sockets Layer), chiffrement utilisé par l’Agent de distribution lors de la 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é.

Un certificat TLS valide est défini avec un nom de domaine complet de 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.

-ErrorFile error_path_and_file_name

Chemin d’accès et nom de fichier du fichier d’erreur généré par le Agent de distribution. Ce fichier est généré à tout moment où une défaillance s’est produite lors de l’application de transactions de réplication sur l’Abonné ; les erreurs qui se produisent sur le serveur de publication ou le serveur de distribution ne sont pas consigné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.

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

-FileTransferType [ 0 | 1 ]

Spécifie le type de transfert de fichier. Valeur indiquant 0 unC (convention d’affectation de noms universelle) et une valeur indiquant FTP (protocole de transfert de 1 fichiers).

-FtpAddress ftp_address

Adresse réseau du service FTP du serveur de distribution. Lorsqu’il n’est pas spécifié, DistributorAddress est utilisé. Si DistributorAddress ce n’est pas spécifié, Distributor il est utilisé.

-FtpPassword ftp_password

Mot de passe utilisateur utilisé pour se connecter au service FTP.

-FtpPort ftp_port

Numéro de port du service FTP pour le 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é.

-FtpUserName ftp_user_name

Nom de l'utilisateur, utilisé pour la connexion au service FTP. Lorsqu’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 performances de la journalisation de l’historique 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 enregistrés dans la base de données de distribution.
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.
3 Insérez toujours de nouveaux enregistrements, sauf s’il s’agit de messages inactifs.

-Nom d’hôte host_name

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

-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 distribution 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 15 secondes.

-MaxBcpThreads number_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 qui existent simultanément est inférieur ou le nombre de MaxBcpThreads 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 pas de limite supérieure codée en dur. La valeur par défaut est 2 le nombre de processeurs, jusqu’à une valeur maximale de 8. Lorsque vous appliquez un instantané généré sur le serveur de publication à l’aide de l’option d’instantané simultanée, un thread est utilisé, quel que soit le nombre que vous spécifiez pour MaxBcpThreads.

-MaxDeliveredTransactions number_of_transactions

Nombre maximal de transactions push ou d’extraction appliquées aux Abonnés dans une synchronisation. Une valeur indiquant 0 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.

Si -MaxDeliveredTransactions et -Continuous sont tous les deux spécifiés, le Agent de distribution remet le nombre spécifié de transactions, puis s’arrête (même si -Continuous elle est spécifiée). Vous devez redémarrer l'Agent de distribution une fois le travail terminé.

-MessageInterval message_interval

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

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

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

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

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é sur différents sous-réseaux, la définition de MultiSubnetFailover=true fournit une détection et une connexion plus rapides au serveur actif (actuellement).

-OledbStreamThreshold oledb_stream_threshold

Spécifie la taille minimale, en octets, pour les données d’objet volumineux binaires au-dessus de laquelle les données sont liées en tant que flux. Vous devez spécifier -UseOledbStreaming d’utiliser ce paramètre. Les valeurs peuvent aller de 400 octets à 1 048 576 octets, avec une valeur par défaut de 16 384 octets.

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

Spécifie si la sortie doit être en clair. Si le niveau détaillé est 0, seuls les messages d’erreur sont imprimés. Si le niveau détaillé est 1, tous les messages de rapport de progression sont imprimés. Si le niveau détaillé est 2 (par défaut), tous les messages d’erreur et les messages de rapport de progression sont imprimés, ce qui est utile pour le 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, la base de données de distribution est interrogée 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.

-Publication

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.

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

-QuotedIdentifier quoted_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 elle est utilisée sans valeur, la Agent de distribution utilise un espace. Si QuotedIdentifier ce n’est pas le cas, le Agent de distribution utilise l’identificateur entre guillemets pris en charge par l’Abonné.

-SkipErrors native_error_id [ :... n ]

Liste séparée par deux-points qui spécifie les numéros d’erreur à ignorer par cet agent. Ce paramètre est ignoré lorsque l’instantané est appliqué à l’abonné par le Agent de distribution.

-SubscriberDatabasePath subscriber_database_path

Chemin d’accès à la base de données Jet (fichier .mdb) s’il SubscriberType s’agit 2 (autorise une connexion à une base de données Jet sans nom de source de données ODBC (DSN)).

-SubscriberLogin subscriber_login

Nom de connexion de l’Abonné. S’il SubscriberSecurityMode s’agit 0 (pour l’authentification SQL Server), ce paramètre doit être spécifié.

-SubscriberPassword subscriber_password

Mot de passe de l’Abonné. S’il SubscriberSecurityMode s’agit 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é. Valeur indiquant 0 l’authentification SQL Server et une valeur indiquant le mode d’authentification 1 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 Agent de distribution pour appliquer des lots de modifications en parallèle à un Abonné, tout en conservant la plupart 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 n’est pas pris en charge ou doit être 0 destiné aux abonnés non-SQL Server ou aux abonnements d’égal à égal. Ce paramètre est ignoré lorsque l’instantané est appliqué à l’abonné par le Agent de distribution.

Si l’une des connexions ne parvient pas à s’exécuter ou à valider, toutes les connexions abandonnent le lot actuel et l’agent utilise un seul flux pour réessayer 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 ou 2 une valeur supérieure pour -SubscriptionStreams, l’ordre dans lequel les transactions sont reçues sur l’Abonné peut différer de l’ordre dans lequel ils ont été effectués sur le serveur de publication. Si ce comportement provoque des violations de contraintes pendant la synchronisation, vous devez utiliser l’option NOT FOR REPLICATION permettant de désactiver l’application des contraintes pendant la synchronisation. Pour plus d’informations, consultez Contrôler le comportement des déclencheurs et des contraintes dans la synchronisation.

Les flux d’abonnement ne fonctionnent pas pour les articles configurés pour fournir Transact-SQL. Pour utiliser des flux d’abonnement, configurez des articles pour remettre des appels de procédure stockée à la place.

-SubscriptionTableName subscription_table

Nom de la table d’abonnement générée ou utilisée sur l’Abonné donné. Lorsqu’elle n’est pas spécifiée, la table MSreplication_subscriptions 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 fichiers longs.

-SubscriptionType [ 0 | 1 | 2 ]

Spécifie le type d'abonnement pour la distribution. Valeur indiquant 0 un abonnement Push, une valeur indiquant 1 un abonnement par extraction et une valeur indiquant 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. Valeur de l’infini 0 TransactionsPerHistory. Consultez le paramètre précédent –MessageInterval.

-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é, car 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 des instantanés en mode caractère ou des abonnés non-SQL Server. Si vous utilisez ce paramètre, le compte de service SQL Server sur l’Abonné nécessite des autorisations de lecture sur le répertoire où se trouvent les fichiers de données d’instantané .bcp . Quand 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é.

-UseOledbStream

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

Dans SQL Server 2017 (14.x) CU 22 et versions ultérieures, UseOledbStreaming écrit dans le C:\Users\<DistributionAgentAccount>\AppData\Temp dossier.

Avant SQL Server 2017 (14.x) CU 22, UseOledbStreaming écrit dans le C:\Program Files\Microsoft SQL Server\<version>\COM dossier.

Dans SQL Server 2019 (15.x) CU 29, SQL Server 2022 (16.x) CU 16 et versions ultérieures, vous pouvez désactiver le streaming OLE DB en mettant à jour -UseOledbStreaming pour 0 éviter l’erreur mentionnée dans le message d’erreur lorsque vous exécutez le Agent de distribution dans SQL Server.

Notes

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 le Agent de distribution, exécutez à distrib.exe partir de l’invite de commandes. Pour plus d’informations, consultez Concepts des exécutables de l’agent de réplication.