Exact Online -> Azure SQL - Operand data type datetime2 is invalid for subtract operator

Het inladen van Exact Online data naar een Azure SQL database levert onderstaande fout op.

Versie Query Tool: Query Tool - 22.0.66-PROD+2350

Wat kunnen we uitvoeren om de synchronisatie correct te laten lopen?

itgendch372: Statement #1 'use XXXXXX@eo...Periods@eolbe;' beginnend op regel 1 veroorzaakte een fout.

The repository can not be opened due to errors.

Backing-database van Invantive Data Replicator kan niet worden geopend.

Kan geen repositoryview maken in groep '050', SQL begint met 'create view {{viewnameprefix}}warning...'.

Operand data type datetime2 is invalid for subtract operator.

Please resolve the errors first and then try again.

Bericht ID: 89f5dc15-e788-4e2d-86c4-c8fed70715a3

Opgetreden (UTC): 9/03/2022 19:57:10

use XXXXXX@eolbe;
SELECT * FROM ExactOnlineREST.Financial.FinancialPeriods@eolbe;

System.Data.SqlClient.SqlException
ValidationException
ValidationException
ValidationException
ValidationException
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Invantive.Data.AnsiSqlProviderBase.PassthroughSqlAction(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters, String loggingTableName)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Invantive.Data.AnsiSqlProviderBase.PassthroughSqlAction(GlobalState owner, ExecutionOptions executionOptions, String actionSql, ParameterList parameters, String loggingTableName)
   at Invantive.Data.Providers.DataCache.DataCacheProvider.TWL(GlobalState , ExecutionOptions , String , Boolean , String )

Dit lijkt zichzelf opgelost te hebben na enkele pogingen om dit opnieuw uit te voeren binnen de Query Tool. Al dan niet toevallig nadat er opnieuw ingelogd werd in Exact na 10 min.

De oorzaak van deze melding “Operand data type datetime2 is invalid for subtract” is de overgang van het datetime datatype op SQL Server met Invantive SQL naar datetime2 (zie Use of datetime2 on SQL Server instead of datetime).

In Data Replicator ontbrak hiervoor per abuis een aanpassing. Deze is inmiddels aangebracht en beschikbaar vanaf release 22.0.71.

In deze release zit ook een aanpassing (in dit geval wel geluk bij ongeluk) zodat niet meer bij een foutmelding bij het installeren van de views op de SQL Server database de installatie van het repository succesvol afgerond wordt. Voortaan zal netjes een blijvende foutmelding gegeven worden.