Événement
31 mars, 23 h - 2 avr., 23 h
Le plus grand événement d’apprentissage SQL, Fabric et Power BI. 31 mars au 2 avril. Utilisez le code FABINSIDER pour économiser 400 $.
Inscrivez-vous aujourd’huiCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
S’applique à : SQL Server
Azure SQL Managed Instance
Le dépannage des erreurs de réplication peuvent être frustrant si vous n’avez pas une connaissance de base du fonctionnement de la réplication transactionnelle. La première étape de création d’une publication consiste à faire en sorte que l’Agent d’instantané crée l’instantané et l’enregistre dans le dossier des instantanés. Ensuite, l’Agent de distribution applique l’instantané à l’abonné.
Ce processus crée la publication et la place dans l’état En cours de synchronisation. La synchronisation fonctionne en trois phases :
Des erreurs peuvent se produire à chaque étape de ce processus. La recherche de ces erreurs peut être l’aspect le plus complexe de la résolution des problèmes de synchronisation. Heureusement, l’utilisation du moniteur de réplication facilite ce processus.
Note
L’Agent d’instantané génère l’instantané et l’écrit dans le dossier d’instantanés spécifié.
Affichez l’état de votre Agent d’instantané :
a. Dans l’Explorateur d’objets, développez le nœud Publications locales sous Réplication.
b. Cliquez avec le bouton droit sur votre publication AdvWorksProductTrans>Afficher l’état de l’Agent d’instantané.
Si une erreur est signalée dans l’état de l’Agent d’instantané, vous pouvez trouver plus de détails dans l’historique des travaux de l’Agent d’instantané :
a. Développez SQL Server Agent dans l’Explorateur d’objets, puis ouvrez le moniteur d’activité des travaux.
b. Triez par Catégorie et identifiez l’Agent d’instantané dans la catégorie REPL-Instantané.
c. Cliquez avec le bouton droit sur l’Agent d’instantané, puis choisissez Afficher l’historique.
Dans l’historique de l’Agent d’instantané, sélectionnez l’entrée de journal appropriée. Il s’agit généralement d’une ou deux lignes avant l’entrée qui signale l’erreur. (Un X rouge indique des erreurs.) Passez en revue le texte du message dans la zone située sous les journaux :
The replication agent had encountered an exception.
Exception Message: Access to path '\\node1\repldata.....' is denied.
Si vos autorisations Windows ne sont pas configurées correctement pour votre dossier d’instantanés, vous voyez une erreur « Accès refusé » pour l’Agent d’instantané. Vous devez vérifier les autorisations sur le dossier où votre instantané est stocké et vérifier que le compte utilisé pour exécuter l’Agent d’instantané dispose des autorisations d’accès au partage.
L’Agent de lecture du journal se connecte à la base de données de votre base de données du serveur de publication et recherche dans le journal des transactions toutes celles qui sont marquées « pour réplication ». Il ajoute ensuite ces transactions à la base de données de distribution.
Connectez-vous à la publication dans SQL Server Management Studio. Développez le nœud du serveur, cliquez avec le bouton droit sur le dossier Réplication, puis sélectionnez Lancer le moniteur de réplication :
Le Moniteur de réplication s’ouvre :
La croix (X) rouge indique que la publication ne se synchronise pas. Développez Mes serveurs de publication du côté gauche, puis développez le serveur de publication approprié.
Sélectionnez la publication AdvWorksProductTrans sur la gauche, puis recherchez le X rouge sur un des onglets pour identifier l’emplacement du problème. En l’occurrence, le X rouge se trouve sur l’onglet Agents, indiquant qu’un des agents rencontre une erreur :
Sélectionnez l’onglet Agents pour identifier l’agent qui rencontre l’erreur :
Cette vue vous montre deux agents : l’Agent d’instantané et l’Agent de lecture du journal. Celui qui rencontre une erreur a un X rouge. En l’occurrence, il s’agit de l’Agent de lecture du journal.
Double-cliquez sur la ligne qui signale l’erreur pour ouvrir l’historique de l’agent pour l’Agent de lecture du journal. Celui-ci fournit plus d’informations sur l’erreur :
Status: 0, code: 20011, text: 'The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'.'.
The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'.
Status: 0, code: 15517, text: 'Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission.'.
Status: 0, code: 22037, text: 'The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'.'.
L’erreur se produit généralement quand le propriétaire de la base de données du serveur de publication n’est pas défini correctement. Ceci peut se produire quand une base de données est restaurée. Pour vérifier cela :
a. Développez Bases de données dans l’Explorateur d’objets.
b. Cliquez avec le bouton droit sur AdventureWorks2022>Propriétés.
c. Vérifiez qu’un propriétaire existe sous la page Fichiers. Si cette zone est vide, ceci est la cause probable de votre problème.
Si le propriétaire est vide sur la page Fichiers, ouvrez une fenêtre Nouvelle requête dans le contexte de la base de données AdventureWorks2022
. Exécutez le code T-SQL suivant :
-- set the owner of the database to 'sa' or a specific user account, without the brackets.
EXECUTE sp_changedbowner '<useraccount>'
-- example for sa: exec sp_changedbowner 'sa'
-- example for user account: exec sp_changedbowner 'sqlrepro\administrator'
Il peut être nécessaire de redémarrer l’Agent de lecture du journal.
a. Développez le nœud SQL Server Agent dans l’Explorateur d’objets, puis ouvrez le moniteur d’activité des travaux.
b. Triez par Catégorie et identifiez l’Agent de lecture du journal dans la catégorie REPL-LogReader.
c. Cliquez avec le bouton droit sur le travail Agent de lecture du journal et sélectionnez Démarrer le travail à l’étape.
Vérifiez que votre publication est maintenant en cours de synchronisation en rouvrant le moniteur de réplication. S’il n’est pas déjà ouvert, vous pouvez le trouver en cliquant avec le bouton droit sur Réplication dans l’Explorateur d’objets.
Sélectionnez la publication AdvWorksProductTrans, sélectionnez l’onglet Agents, puis double-cliquez sur l’Agent de lecture du journal pour ouvrir l’historique de l’agent. Vous devez maintenant voir que l’Agent de lecture du journal est en cours d’exécution, et qu’il réplique des commandes ou qu’il indique « aucune transaction répliquée » :
L’Agent de distribution recherche des données dans la base de données de distribution, puis les applique à l’abonné.
Connectez-vous à la publication dans SQL Server Management Studio. Développez le nœud du serveur, cliquez avec le bouton droit sur le dossier Réplication, puis sélectionnez Lancer le moniteur de réplication.
Dans Moniteur de réplication, sélectionnez la publication AdvWorksProductTrans, puis l’onglet Tous les abonnements. Cliquez avec le bouton droit sur l’abonnement et sélectionnez Voir les détails :
La boîte de dialogue Historique du serveur de distribution vers l’Abonné s’ouvre et donne des indications sur l’erreur rencontrée par l’Agent :
Error messages:
Agent 'NODE1\SQL2016-AdventureWorks2022-AdvWorksProductTrans-NODE2\SQL2016-7' is retrying after an error. 89 retries attempted. See agent job history in the Jobs folder for more details.
L’erreur indique que l’Agent de distribution fait une nouvelle tentative. Pour trouver plus d’informations, consultez l’historique de l’Agent de Distribution :
a. Développez SQL Server Agent dans Explorateur d'objets >Moniteur d’activité des travaux.
b. Triez les travaux par Catégorie.
c. Identifiez l’Agent de distribution dans la catégorie REPL-Distribution. Cliquez avec le bouton droit sur l’agent, puis sélectionnez Afficher l’historique.
Sélectionnez une des entrées d’erreur et consultez le texte de l’erreur en bas de la fenêtre :
Message:
Unable to start execution of step 2 (reason: Error authenticating proxy NODE1\repl_distribution, system error: The user name or password is incorrect.)
Cette erreur indique que le mot de passe utilisé par l’Agent de distribution est incorrect. Pour la résoudre :
a. Développez le nœud Réplication dans l’Explorateur d’objets.
b. Cliquez avec le bouton droit sur l’abonnement >Propriétés.
c. Sélectionnez les points de suspension (...) à côté de Compte de processus de l’agent, puis modifiez le mot de passe.
Revenez au moniteur de réplication en cliquant avec le bouton droit sur Réplication dans l’Explorateur d’objets. Une croix (X) rouge sous Tous les abonnements indique que l’Agent de distribution rencontre encore une erreur.
Ouvrez l’historique Du serveur de distribution vers l’Abonné en cliquant avec le bouton droit sur l’abonnement dans Moniteur de réplication>Afficher les détails. Ici, l’erreur est désormais différente :
Connecting to Subscriber 'NODE2\SQL2016'
Agent message code 20084. The process could not connect to Subscriber 'NODE2\SQL2016'.
Number: 18456
Message: Login failed for user 'NODE2\repl_distribution'.
Cette erreur indique que l’Agent de distribution n’a pas pu se connecter à l’abonné, car la connexion a échoué pour l’utilisateur NODE2\repl_distribution. Pour en savoir plus, connectez-vous à l’abonné et ouvrez le journal des erreurs SQL Actuel sous le nœud Gestion dans l’Explorateur d’objets :
Si vous voyez cette erreur, c’est que la connexion est manquante sur l’abonné. Pour résoudre cette erreur, consultez Autorisations pour la réplication.
Une fois que l’erreur de connexion est résolue, revenez au moniteur de réplication. Si tous les problèmes ont été traités, vous devez voir une flèche verte à côté de Nom de la publication et l’état En cours d’exécution sous Tous les abonnements.
Cliquez avec le bouton droit sur l’abonnement pour rouvrir l’historique Du serveur de distribution vers l’Abonné afin de vérifier que tout est résolu. S’il s’agit de la première exécution de l’Agent de distribution, vous pouvez constater que l’instantané a été copié en bloc vers l’Abonné :
Vous pouvez utiliser la journalisation détaillée pour voir des informations plus détaillées sur les erreurs qui se produisent avec n’importe quel agent dans la topologie de réplication. Les étapes sont identiques pour chaque agent. Veillez simplement à sélectionner l’agent approprié dans le moniteur d’activité des travaux.
Note
Les agents peuvent être sur le serveur de publication ou sur l’abonné, selon s’il s’agit d’un abonnement par extraction ou par émission de données. Si l’agent n’est pas disponible sur le serveur que vous examinez, vérifiez l’autre serveur.
Décidez où vous voulez que la journalisation détaillée soit enregistrée et vérifiez que le dossier existe. Cet exemple utilise c:\temp.
Développez le nœud SQL Server Agent dans l’Explorateur d’objets, puis ouvrez le moniteur d’activité des travaux.
Triez par Catégorie et identifiez l’agent concerné. Cet exemple utilise l’Agent de lecture du journal. Cliquez avec le bouton droit sur l’agent concerné >Propriétés.
Sélectionnez la page Étapes, puis sélectionnez l’étape Exécution de l’agent. Sélectionnez Modifier.
Dans la zone Commande, commencez une nouvelle ligne, entrez le texte suivant et sélectionnez OK :
-Output C:\Temp\OUTPUTFILE.txt -Outputverboselevel 3
Vous pouvez modifier l’emplacement et le niveau de détail selon vos préférences.
Note
Lorsque vous ajoutez le paramètre de sortie verbeuse, les éléments suivants peuvent entraîner l'échec de votre agent ou l'absence du fichier outfile :
-Output
.Redémarrez l’Agent de lecture du journal en double-cliquant sur l’agent >Arrêter le travail à l’étape. Actualisez en sélectionnant l’icône Actualiser dans la barre d’outils. Cliquez avec le bouton droit sur l’agent >Démarrer le travail à l’étape.
Examinez la sortie sur le disque.
Pour désactiver la journalisation détaillée, suivez les mêmes étapes que précédemment pour supprimer l’ensemble de la ligne -Output
que vous avez ajoutée auparavant.
Saviez-vous que vous pouvez modifier le contenu SQL vous-même ? Dans ce cas, non seulement vous nous aidez à améliorer notre documentation, mais vous êtes également cité en tant que contributeur à la page.
Pour plus d’informations, consultez le Guide pratique pour contribuer à la documentation SQL Server
Événement
31 mars, 23 h - 2 avr., 23 h
Le plus grand événement d’apprentissage SQL, Fabric et Power BI. 31 mars au 2 avril. Utilisez le code FABINSIDER pour économiser 400 $.
Inscrivez-vous aujourd’huiFormation
Parcours d’apprentissage
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization