KB Article #177057
Using Interchange with a case insensitive database on a case sensitive MS SQL server
Problem
MS SQL server has the ability to create a case insensitive database on a case sensitive server. When used in conjunction with such a database, Interchange will be unable to start up with an error such as:
2013-06-18 08:29:45,899 - INFO [Startup] (SchemaInstaller.installSchema:75) - Done loading schemas 2013-06-18 08:29:46,164 - ERROR [Startup] (UpgradeExecuter.executeUpgrades:68) - Error in executing upgrade class: com.cyclonecommerce.crossworks.upgrade.componentupgrade.RestructureCRLDirectory java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ... Caused by: kodo.util.DataStoreException: Database 'DATABASENAME' does not exist. Make sure that the name is entered correctly. at kodo.jdbc.sql.DBDictionary.newDataStoreException(DBDictionary.java:3403) ... Caused by: java.sql.SQLException: Database 'DATABASENAME' does not exist. Make sure that the name is entered correctly. at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:365) ... 2013-06-18 08:29:46,179 - FATAL [Startup] (ControlNode.halt:90) - Fatal error while performing schema maintenance com.cyclonecommerce.persistence.upgrade.UpgradeException: java.lang.reflect.InvocationTargetException at com.cyclonecommerce.persistence.upgrade.UpgradeExecuter.executeUpgrades(UpgradeExecuter.java:69) ... Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ... Caused by: kodo.util.DataStoreException: Database 'DATABASENAME' does not exist. Make sure that the name is entered correctly. at kodo.jdbc.sql.DBDictionary.newDataStoreException(DBDictionary.java:3403) ... Caused by: java.sql.SQLException: Database 'DATABASENAME' does not exist. Make sure that the name is entered correctly. at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:365) ... 30 more
Resolution
This can be corrected via a property key in the .../Interchange/conf/datastoreconfig.xml file.
In the datastoreconfig.xml file, locate the ConnectionInfo with an id of "MSSQLServer". Within this ConnectionInfo, locate the Properties section.
There is usually at least one property already defined in this section.
Add the following line between the '<Properties>' and '</Properties>' lines:
<Property key="kodo.jdbc.DBDictionary" value="SchemaCase=preserve"/>