Module - MSSQL Datasource (MSSQL Datasource)

Provides support for using MSSQL as the main GRID DB.

MSSQL support is disabled by default in order to ensure that the ACL can run in any environment even without an existing DB server.

When disabled, ACL uses an embedded HSQL database engine for all storage operations instead of MSSQL. What database is used can be seen either via JMX monitoring or with log level set to debug. In the logs, connections to HSQL are named "java:hsql" whereas MSSQL connections are named "java:gacl-mssql".

How to Connect to MSSQL

In order to enabled the MSSQL connection the following steps need to be performed:

  • Configure the MSSQL server:
    • Create the GRIDCoreDB database using "//Core/GRID/DEV/GRID/src/CoreDB/schemas/MSSQL-GRIDCoreDB-Schema.sql".
    • When XA is enabled: (default since 1.2.2 & recommended)
      • Follow the general instructions for XA support & MSSQL (see "//Core/GRID/DEV/GRID/src/CoreDB/MSSQL-XA/").
      • Grant XA rights to the CoreDB user using "//Core/GRID/DEV/GRID/src/CoreDB/schemas/MSSQL-GRANT-CoreDB-XA.sql".
    • When XA is NOT enabled: No extra configuration is required in MSSQL.
  • Start the ACL with the additional commandline parameter "-Dmssqlserver=hostname"

The connection to the SQLServer is established using the default port number 1433 and username "CoreDB". User, port and password can be adjusted inside "[app]/config/tinyjee-configuration.xml" after the ACL was started once.

System Properties

The following table lists (Java) system properties that are defined by this extension and can be used to enable MSSQL support or adjust the behaviour of this datasource:

System Property Since Description
"mssqlserver" 1.0 Is a property defining the hostname or IP-address of the MSSQL server that hosts the GRID CoreDB. The default configuration that is created by the MSSQL extension will only enable MSSQL support if this system property was specified.
Note: Setting the port number with the hostname or IP-address is not allowed.
"mssqlserverFailover" 1.2.2 Is a property defining the hostname or IP-address of the MSSQL server that hosts a hot standby mirror of the GRID CoreDB. Use this parameter in high availability setups.
Note: Setting the port number with the hostname or IP-address is not allowed.
"mssql.no.xa" 1.2.2 Is a boolean property that toggles whether the SQLServer driver is used with the classic Driver interface wrapped in an XA.emulating datasource instead of using the driver's real XA interface which provides true distributed transactions at the cost of additional database configuration inside the SQLServer.
"gacl.mssql.use.parametrized.tag.queries" 1.0 When set to true, uses prepared parametrized queries with FT searches instead of building adhoc search queries with values being included as text. Note: In general this should offer better performance, however SQLServer 2008 crashes when this is enabled.
"mssql.use.ftsearch.tag.queries" 1.2.3 Tuning property to enable fulltext search in MSSQL instead of using full table scan for tag queries.
Fulltext search has the disadvantage that date limitation is not honored in the index, thus a table scan with a data range limitation can be faster.

Starting from version 1.2.3, FT searches are no longer enabled by default. Use this option to bring back the behaviour of previous versions.
"mssql.use.tag.query.provider.always" 1.2.3 Tuning property to force enabling this tag query provider even when fulltext search is not enabled.
"mssql.use.ao" 1.2.2 Is a boolean property that toggles whether the SQLServer driver is used with Always On feature
"readonly" 1.2.2 Is a boolean property that toggles whether the SQLServer driver is used with readonly Always On feature

System properties can be specified at the commandline via "-DpropertyName=value". Use "startup.params.*" to permanently enable these properties.

Fulltext Query Support

This module implements the tag query handlers using MSSQL fulltext queries with CONTAINSTABLE and CONTAINS (depending on the query type whether filtering or searching is required).

MSSQL full text search is no longer enabled by default starting from version 1.2.3 as there are scalability issues related to this query option

In place of the MSSQL tag query provider that was used in previous versions, there is a new, generic, DB independent provider that is enabled by default, offering indexed queries when used in combination with small date ranges (implemented by Module - Jpa Datasource).

There are 2 options to use fully indexed tag queries (which are required to support tag queries without any or with large date ranges):

  • Option 1: ACL local FT search:
    See Module - Jpa Datasource for details how local fulltext indexing and search can be enabled.
  • Option 2: Continue using MSSQL’s FT search:
    To bring back the previous behavior add: "-Dmssql.use.ftsearch.tag.queries=true" to "startup.params.(sh|bat)" and disable local FT indexing if enabled.

Appendix - GRIDCoreDB Schema

In contrast to the HSQL schema used for tests, the production schema for MSSQL is hand crafted and optimized to correspond with the source code created under the module Jpa Datasource.

SQL Dump

1
2
3
-- DUMP NOT FOUND IN 'src/CoreDB/schemas/MSSQL-GRIDCoreDB-Schema.sql'
                                    -- The latest dump can be obtained from P4:
                                    -- '//Core/GRID/DEV/GRID/src/CoreDB/schemas/MSSQL-GRIDCoreDB-Schema.sql'

The latest version of this schema (including conceptial documentation) can be found inside P4 at //Core/GRID/DEV/GRID/src/CoreDB/schemas/MSSQL-GRIDCoreDB-Schema.sql