Creating offline database for retail POS unit

When creating an offline database for a POS unit using the Retail Channel Configuration Utility I was met with an error saying “An error occurred while creating the offline database”.

An error occurred while creating the offline database

I could say positively that access rights and such were more or less correct since I could see the offline database popping up shortly when looking through the Management Studio. Googling a bit I found the error described as something with double DataAreaIds on some tables, but I could quickly rule that out.

The post:

http://blogs.msdn.com/b/axsupport/archive/2012/05/14/ax-2012-retail-creating-offline-database-fails.aspx

So looking in the log-file (it is found in the folder where the Retail Channel Configuration Utility is installed) I found errors like this:

Error: 0 : EmbeddedInstall: CheckDatabase failed:System.Exception: CheckDatabase failed while creating database schema:System.Data.SqlClient.SqlException (0x80131904): Must declare the scalar variable “@nvc_INVENTLOCATIONDATAAREAID”.  at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

Errors like that could point in the direction of a collation mismatch. So I checked the collation of database I was referring to in the Retail Channel Configuration Utility. It was set to SQL_Latin1_General_CP1_CI_AS and the local SQL server I was trying to create the database on was set to Danish_Norwegian_CI_AS.

Database properties

After reinstalling the local SQL server with the collation set to match the parent database I could create the offline database.

Oh, and while I remember it: You need the SQL Server Express with Advanced Features to make it work.

Advertisements

Enabling index hints is deprecated in AX 2012 … almost

Sending index hints to the SQL server from AX has been around for a long time and often it has not done any good since the SQL server is pretty good at picking the best way it self.

So when it ended up as a parameter in the AOS server configuration in AX 2009 and then removed from the configuration in AX 2012 we seemed clear from the trouble it could cause. Microsoft stated that it was deprecated with AX 2012 and no longer available …

So it seemed a bit strange that the SQL server apparently received the information on a server I was working on recently.

While going through about all possible stuff to locate why it was acting like the non-existing index hint flag was enabled, I was going through the registration database to compare it against an AOS we knew was working as expected. And there it was … the registration key called “hint”.

I did a bit of research and I was not the only one struggling with this. As it appears there are these values to choose from :

Empty = Index hints are enabled and LTRIM (yes, it is there too) is disabled.

0 = Both index hints and LTRIM are disabled. This has to be the recommended setting.

1 = The same as empty. Does that make sense? No, not really. Anyways …

2 = Index hints are disabled and LTRIM is enabled.

3 = Both index hints AND LTRIM are enabled

 

And just for refreshing the memory: The location of the registration keys are

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Dynamics Server\6.0

and in here find the right AOS and configuration.