DataSync
Cette rubrique décrit les étapes de résolution de problèmes avec DataSync.
Lors d'une opération Charger tout, certains utilisateurs reçoivent le message d'erreur suivant :
LoadAll completed with errors: Impossible to load data to <Customers>., InnerMessage: Impossible to load data to <Customers>. -> Could not load file or assembly 'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'. Le fichier spécifié est introuvable.
2020-08-06 10:56:23.041 -04:00 [ERR] Could not load file or assembly 'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'. Le fichier spécifié est introuvable. System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'. Le fichier spécifié est introuvable. File name: 'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, IntPtr ptrLoadContextBinder) at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, IntPtr ptrLoadContextBinder) at System.Reflection.Assembly.Load(AssemblyName assemblyRef) at System.Data.SqlClient.SqlConnection.ResolveTypeAssembly(AssemblyName asmRef, Boolean throwOnError) at System.TypeNameParser.ResolveAssembly(String asmName, Func`2 assemblyResolver, Boolean throwOnError, StackCrawlMark& stackMark) at System.TypeNameParser.ConstructType(Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark) at System.TypeNameParser.GetType(String typeName, Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark) at System.Type.GetType(String typeName, Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError) at System.Data.SqlClient.SqlConnection.CheckGetExtendedUDTInfo(SqlMetaDataPriv metaData, Boolean fThrow) at System.Data.SqlClient.SqlDataReader.GetValueFromSqlBufferInternal(SqlBuffer data, SqlMetaData metaData) at System.Data.SqlClient.SqlDataReader.GetValue(Int32 i) at DBProviders.BaseProvider.RecordReaderOfArrayOfFastExpando(IDataReader reader, List`1 metadata) at DataSyncQueryExecutor.BaseDataSyncQueryExecutor.ProduceFromReader[T](DbTranslateResult translateResult, ITargetBlock`1 consumerHeadBlock, CancellationToken cancellationToken) at DataSyncQueryExecutor.BaseDataSyncQueryExecutor.ProduceForLoadAll[T](SqlReadableForDataLoad sqlObject, ITargetBlock`1 consumerHeadBlock, CancellationToken cancellationToken) at DataSyncQueryExecutor.ExecutorExtensions.ProduceForLoadAll[T](ConnectionDefinitionForDataLoad connectionDetails, SqlReadableForDataLoad sqlObject, ITargetBlock`1 consumerHeadBlock, CancellationToken cancellationToken) at DataSynchronizer.SqlObjectForSynchronization.<>cDisplayClass3_0.<<LoadAll>b_0>d.MoveNext() — End of stack trace from previous location where exception was thrown — at DataSynchronizer.BaseSqlObjectSynchronizer.ProduceAndConsume(Func`2 producerCallback, JobAction actionType, CancellationToken cancellationToken) at DataSynchronizer.SqlObjectForSynchronization.LoadAll(CancellationToken cancellationToken)
Solution
Ces erreurs sont causées par une inadéquation du type de base de données dans l'un des champs de votre table. Pour résoudre ce problème, il suffit de supprimer la coche dans la colonne Sync à côté de la table problématique (il y aura un X rouge dans la colonne Type de Destination, comme le montre l'image ci-dessous). Lorsque vous tentez à nouveau votre opération de chargement, vous ne devriez plus recevoir le message d'erreur.
Lors de la première tentative d'utilisation de DataSync après son installation, certains utilisateurs reçoivent le message d'erreur suivant :
Solution
Cette erreur se produit généralement lorsque les utilisateurs ont téléchargé et installé manuellement une mauvaise version de .NET Core (y compris le SDK).
Pour résoudre ce problème :
-
Désinstallez DataSync ainsi que tous les paquets .NET Core que vous avez actuellement installés.
-
Redémarrez votre serveur.
-
Réinstallez DataSync. Le processus d'installation de DataSync installera automatiquement la version correcte de .NET Core, ce qui devrait résoudre le problème.
Voir la section Configuration requise pour le système pour plus d'informations sur les exigences d'installation de DataSync.
Parfois, les utilisateurs sont incapables de créer des connexions SharePoint dans DataSync si l'authentification à deux facteurs est activée dans leur configuration.
Solution
Supprimez l'authentification à deux facteurs de votre configuration SharePoint en suivant les étapes ci-dessous :
-
Connectez-vous à SharePoint et accédez au menu Paramètres du compte.
-
Dans le menu Paramètres du compte, cliquez sur l'option Vérification de sécurité supplémentaire en bas du volet Infos sur la sécurité.
-
Sélectionnez l'option Mots de passe des applications (illustrée ci-dessous), et créez un nouveau mot de passe pour DataSync. Désormais, l'authentification à deux facteurs ne sera plus nécessaire pour se connecter à DataSync.
Après avoir tenté d'enregistrer une connexion ProvideX, l'interface utilisateur commence à tourner en boucle et n'enregistre pas la configuration de la connexion.
Solution
Pour résoudre ce problème, vous devez changer votre pool d'applications DataSync dans le Gestionnaire IIS pour un utilisateur Windows ou domaine qui a accès au chemin partagé de Sage 100.
Pour ce faire :
-
Ouvrez le Gestionnaire IIS et sélectionnez Pools d'applications.
-
Dans la liste des pools d'applications, cliquez avec le bouton droit de la souris sur DataSyncIdentity et sélectionnez Paramètres avancés dans la liste déroulante.
-
Localisez la section Modèle de processus et changez l'identité du pool d'applications de Compte intégré à Compte personnalisé (comme indiqué ci-dessous). Cliquez sur OK. Cela devrait résoudre le problème de bouclage de l'interface utilisateur dans DataSync.
-
Répétez l'étape ci-dessus pour tous les pools d'applications DataSync.
Cette divergence occasionnelle dans la synchronisation des données peut être due à la représentation d'un champ Date en tant que DateTime dans DataSync. Lors de la comparaison de deux types de données distincts, des incohérences dans les dates comparées peuvent entraîner des lignes manquantes au cours des processus de chargement ou de suppression.
Pour vérifier si un champ n'est pas correctement converti dans DataSync, utilisez la fonction "Aperçu des données" pour vérifier si toutes les entrées de date contiennent une valeur temporelle de "0:00:00" dans toutes les lignes. Vous pouvez également consulter la documentation de la table pour confirmer le type de données utilisé pour le champ spécifique.
Solution
Pour rectifier cette anomalie, il est essentiel de créer un champ personnalisé qui définit explicitement le champ comme étant une date. Ensuite, utilisez ce champ personnalisé comme clé de suivi ou comme champ de chargement par partition pour un processus de synchronisation des données transparent.