DataSync
This topic provides troubleshooting steps for DataSync issues.


When attempting a Load All operation, some users receive the following error message:

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
These errors are caused by a database type mismatch in one of your table fields. To resolve the issue, simply remove the checkmark in the Sync column next to the problematic table (it will have a red X in the Type Destination column as shown in the image below). When re-attempting your load operation, you should no longer receive the error message.


When attempting to use DataSync for the first time after installing it, some users receive the following error message:
Solution
This error is typically happens when users have manually downloaded and installed the wrong version of .NET Core (including the SDK).
To resolve the issue:
-
Uninstall DataSync as well as all .NET Core packages that you currently have installed.
-
Restart your server.
-
Re-install DataSync. The DataSync installation process will automatically install the correct version of .NET Core which should resolve the issue.
See System Requirements for more information on DataSync installation requirements.


Sometimes, users are unable to create SharePoint connections in DataSync if dual-factor authentication is enabled in their configuration.
Solution
Remove dual-factor authentication from your SharePoint configuration by following the steps below:
-
Log in to SharePoint and navigate to the Account Settings menu.
-
In the Account Settings menu, click the Additional Security Verification option at the bottom of the Security Info pane.
-
Select the App Passwords option and create a new password for DataSync. Now, no double authentication will be necessary when logging in to DataSync.


After attempting to save a ProvideX connection, the user's UI begins looping and never saves the connection configuration.
Solution
To resolve this issue, you must change your DataSync application pool in the IIS Manager to a Windows or domain user that has access to the shared Sage 100 path.
To do so:
-
Open the IIS Manager and select Application Pools.
-
From the Application Pools list, right-click on DataSyncIdentity and select Advanced Settings from the drop-down list (shown below).
-
Locate the Process Model section and change the application pool identity from Built-in account to Custom account (as shown below). Click OK. This should resolve the UI looping issue in DataSync.
-
Repeat the above step for all DataSync application pools.


This occasional discrepancy in data synchronization may arise due to the representation of a Date field as DateTime within DataSync. When comparing two distinct data types, inconsistencies in the dates being compared can result in missing rows during the loading or deletion processes.
To verify whether a field is not correctly cast within DataSync, utilize the "Preview data" feature to inspect if all date entries contain a time value of 0:00:00 across all rows. Alternatively, consult the table documentation to confirm the data type used for the specific field.
Solution
To fix this discrepancy, it is essential to create a custom field explicitly casting the field as a date. Subsequently, employ this customized field as your Tracking Key or Load by Partition field for a seamless data synchronization process.