Currently Being Moderated

Recommended ODBC Drivers for 16.0 MobiLink

The MobiLink server connects to several types of consolidated database using the ODBC 3.5 standard. For some supported consolidated database types you should use the SAP SQL Anywhere ODBC driver for that type of database. For others we recommend drivers supplied by the database vendors. The SAP SQL Anywhere ODBC drivers and the MobiLink server are included in the SAP SQL Anywhere 16 product. When SAP does not provide an ODBC driver, then you must use one provided by another vendor. ODBC drivers from other vendors may not support some optional ODBC functionality that the MobiLink server requires.

 

Driver Testing

 

We use two types of testing of ODBC drivers with MobiLink.

 

The first type of testing is a comprehensive suite of regression tests that exercise synchronization functionality. If some specific regression tests fail, the driver may still be suitable as long as your synchronizations do not rely on the functionality that failed. For example, if the only regression tests that fail are for synchronization of LONG BINARY data, then the driver may still be suitable for you if you are not using MobiLink to synchronize LONG BINARY data.

 

The second type of testing is high-load testing involving many clients synchronizing simultaneously with a MobiLink server running on a multi-processor computer. We have found that some drivers from other vendors will fail with multiple simultaneous connections or under high load while running on multiple processors.

 

Recommended Drivers

 

As a result of our testing, we recommend the following ODBC drivers for use with version 16.0.0 of the MobiLink server.

 

If you are having problems with an older version of MobiLink, you should consider upgrading to a newer version. Older versions may no longer be actively supported. For more information, see SAP SQL Anywhere Supported Platforms and Engineering Support Status.

 

The following sections list the recommended ODBC driver for different types of consolidated database. In some cases, alternative drivers are also listed. Click on one of the consolidated DBMS types below to see recommended driver information for using MobiLink with that type of DBMS:

 

SAP SQL Anywhere 16 and 12

SAP HANA 1.00.72

SAP Adaptive Server Enterprise 15.7 and 15.5

SAP IQ 16.0 and 15.4

Oracle 12.1, 11g and 10g

Microsoft SQL Server 2012 and 2008

IBM DB2 10.1 and 9.7

MySQL 5.5.16 and 5.1.3

 

For detailed supported consolidated databases, please refer to MobiLink Consolidated Database Support.

 

SAP SQL Anywhere 16.0 and 12.0

 

SAP SQL Anywhere 16.0

 

DriverSQL Anywhere 16.0
Version16.0.0
StatusRecommended for use with MobiLink
Client SoftwareNone
Operating SystemWindows
XP, Vista, 7, Server 2003, Server 2008, Server 2008 R2, and Server 2012
Linux

RedHat Enterprise Linux 5 and 6

SuSE Enterprise Linux 10 and 11
Ubuntu 10.04 and 12.04

 

Supported where the kernel/glibc versions are within the ranges specified on the SQL Anywhere Supported Linux Platforms.

Solaris10 and 11
AIX6.1 and 7.1
OS X10.8
ProsAll tests passed
ConsNone
NotesNone
Permission RequirementsThe MONITOR system privilege is required in order to invoke the locking/blocking detection logic.

 

SAP SQL Anywhere 12.0

 

DriverSQL Anywhere 12.0
Version12.0.x
StatusRecommended for use with MobiLink
Client SoftwareNone
Operating SystemWindows

XP, Vista, 7, Server 2003, Server 2008, Server 2008 R2, and Server 2012

Linux

RedHat Enterprise Linux 5 and 6

SuSE Enterprise Linux 10 and 11
Ubuntu 10.04 and 12.04

 

Supported where the kernel/glibc versions are within the ranges specified on the SQL Anywhere Supported Linux Platforms.

Solaris10 and 11
AIX6.1 and 7.1
ProsAll tests passed
ConsNone
NotesNone

 

SAP HANA 1.00.72

 

DriverHDB ODBC Driver
Version1.00.72.xx (Windows x64) and 1.00.72.xx (Linux x64).
StatusRecommended for use with MobiLink (versions 16.0.0.1877 and up for Windows, 16.0.0.1824 and up for Linux)
Client SoftwareNone
Operating SystemWindows

Vista, 7, Server 2008, and Server 2008 R2

Linux

RedHat Enterprise Linux 5 and 6

SuSE Enterprise Linux 10 and 11

ProsAll tests passed
ConsNone
Notes
  1. Stored Procedures:

 

HANA does not support calling stored procedures with NULLs for scalar input parameters. Therefore, the upload_insert and upload_update scripts should not be implemented as stored procedure calls for any sync tables with nullable columns. The MobiLink server will replace NULLs with zero length string/binary values for parameters with CHAR/BINARY types and then pass them to the HANA database, when it calls the user authentication scripts. Therefore the user authentication stored procedures should be written accordingly based on this behavior of the MobiLink server. The user-defined parameters are also set to zero length strings when first referenced.

 

  1. MobiLink Server System Objects:

 

The primary key columns in the MobiLink server system tables are maintained by HANA SEQUENCEs through stored procedure calls. Users can use the ml_add_connection_script and ml_add_table_script procedures to add, modify, or delete connection and table scripts and the ml_add_user and ml_add_database to add MobiLink users and remote databases. Please do not directly insert any rows into the MobiLink server system tables.

 

  1. Timestamp-based Download:

 

Since HANA always uses snapshot isolation for queries, MobiLink server will use the start time of the oldest open transaction of the database as the next last_download_timestamp. So download_cursor and download_delete_cursor scripts can use the "LAST MODIFIED" logic to generate a time based download stream from shadow tables that can be populated by triggers defined on the actual synchronization tables.

 

Alternatively, the download_cursor and download_delete_cursor scripts can be written based on the hidden columns $validto$ and $validfrom$, when the table is created with the "HISTORY COLUMN" clause and the next last_download_timestamp can be generated by the generate_next_last_download_timestamp script. For more details about these hidden columns, please reference the HANA documents.

Permission RequirementsThe CATALOG READ privilege is required in order to invoke the timestamp-based download mechanism and the locking/blocking detection logic.

 

SAP Adaptive Server Enterprise15.7 and 15.5

 

We are unable to recommend an ASE ODBC driver at this time. We continue to test against ASE and are working with the ASE team to resolve issues. Watch this page for changes.

 

 

SAP IQ 16.0 and 15.4

 

SAP IQ 16.0

 

DriverSAP IQ ODBC Driver
Version

16.00.00.428 on Windows (x64) and 16.00.0000 on Linux (x64) - Both drivers can be installed from the SAP IQ 16.0 GA release.

StatusRecommended for use with MobiLink
Client SoftwareNone
Operating SystemWindows

XP, Vista, 7, Server 2003, Server 2008, and Server 2008 R2

Linux

RedHat Enterprise Linux 5 and 6

SuSE Enterprise Linux 10 and 11

ProsAll tests passed
ConsNone
Notes
  1. Only a 64-bit MobiLink server is supported on Windows and Linux for consolidated databases running on a SAP IQ 16.0 server;
  2. Using the Row Level Versioning feature introduced in SAP IQ 16.0 would greatly increase the throughput for upload and dramatically improves the upload performance, if there is no BLOB columns and foreign keys used in any of the upload tables, because the RLV enabled tables created on the RLV store would be allowed to be accessed concurrently by multiple connections. However, the ELV feature is limited to tables without BLOB and foreign key columns. If any of the sync tables that will be included in the upload streams contains BLOB and/or foreign key columns, the upload phase must be serialized, because SAP IQ 16.0 server does not allow more than one connection to modify a given table concurrently. This requirement can be achieved, if the begin_upload connection script is written to include or to use the following SQL statement

 

LOCK TABLE table_name IN WRITE MODE WAIT time_string



 

where table_name is the name of a table that is defined on the IQ store and the time_string gives the maximum time period to lock the table. The table can be as simple as the one defined as

 

create table coordinate_upload ( c1 int )




It is not required to have any data in this table.


If any of the other MobiLink server transactions is required to modify any IQ tables, all of these transaction must be serialized. The same logic mentioned above can be used.


This technique is considered more efficient than the MobiLink server to retry on each transaction automatically and users will get better performance.

Permission Requirements
  1. The EXECUTE permission on SP_IQTRANSACTION is required by MobiLink server to use snapshot isolation for download.
  2. The MONITOR system privilege is required in order to invoke the locking/blocking detection logic.

 

SAP IQ 15.4

 

DriverSAP IQ ODBC Driver
Version12.00.01.3019 on Windows (x64) and 12.00.01.3761 on Linux (x64) - This driver is available in SAP IQ 15.4 ESD #2.
StatusRecommended for use with MobiLink
Client SoftwareNone
Operating SystemWindows
XP, Vista, 7, Server 2003, Server 2008, and Server 2008 R2
Linux
RedHat Enterprise Linux 5 and 6
SuSE Enterprise Linux 10 and 11
ProsAll tests passed
ConsNone
Notes
  1. The SAP IQ 15.4 server binaries must be from SAP IQ 15.4 ESD #1 or up;
  2. Only a 64-bit MobiLink server is supported on Windows and Linux for consolidated databases running on a SAP IQ 15.4 server;
  3. If an upload contains any data that modifies any sync tables that were defined on the IQ store and if the MobiLink server is running with more than one concurrent database worker threads or the MobiLink server is currently running in a server farm, all the uploads must be serialized, because SAP IQ 15 server allows only a single connection to modify a given table on the IQ store at any given time. This requirement can be achieved, if the begin_upload connection script is written to include or to use the following SQL statement

 

LOCK TABLE table_name IN WRITE MODE WAIT time_string

 

where table_name is the name of a table that is defined on the IQ store and the time_string gives the maximum time period to lock the table. The table can be as simple as the one defined as

 

create table coordinate_upload ( c1 int )

It is not required to have any data in this table.

If any of the other MobiLink server transactions is required to modify any IQ tables, all of these transaction must be serialized. The same logic mentioned above can be used.

This technique is considered more efficient than the MobiLink server to retry on each transaction automatically and users will get better performance.
Permission RequirementsPermission to EXECUTE on SP_IQTRANSACTION - required by MobiLink server to use snapshot isolation for download.

 

Oracle 12.1, 11g, and 10g

 

Oracle 12.1

 

DriverSQL Anywhere 16 Oracle ODBC Driver
Version16.00.00
StatusRecommended for use with MobiLink
Client SoftwareOracle 12.1 Client
Operating SystemWindows
7, Server 2008, Server 2008 R2, and Server 2012
Linux
RedHat Enterprise Linux 5
SuSE Enterprise Linux 10 and 11
Solaris10
AIX6.1
ProsAll tests passed
ConsNone
Notes
  1. Before using this driver, you must install Oracle 12.1 client. To load this driver, you must set Oracle client libraries in your LD_LIBRARY_PATH (Linux, Solaris) or LIBPATH (AIX).
  2. TNS server name on Windows DSN setting and ServerName in Linux and Unix .odbc.ini are Oracle TNS service name defined in $ORACLE_HOME/network/admin/tnsnames.ora
  3. The default setting of "Procedure return results or uses VARRAY parameters" on Windows or ProcResults on Linux and Unix is 'No'.
  4. Result sets can now be returned by stored procedures through the Oracle implicit result set regardless of the setting for the "Procedure return results or uses VARRAY parameters" parameter.
  5. If you are using a stored procedure that returns a REF CURSOR, the REF CURSOR parameter (either OUT or IN OUT) must be defined as the last parameter in the parameter list of the stored procedure.
Permission Requirements
  1. Permission to EXECUTE on SYS.DBMS_UTILITY - required by MobiLink to determine if the database is running on an Oracle RAC
  2. Permission to SELECT from SYS.GV_$TRANSACTION - required by MobiLink server to do TIMESTAMP based downloads
  3. Permission to SELECT from SYS.V_$SESSION - required by MobiLink server to determine the SID and SERIAL# values of the current session
  4. Permission to SELECT from DBA_OBJECTS, SYS.GV_$LOCK and SYS.GV_$SESSION - required by MobiLink server locking/blocking detection logic.

 

Oracle 11g

 

DriverSQL Anywhere 16 Oracle ODBC Driver
Version16.00.00
StatusRecommended for use with MobiLink
Client SoftwareOracle 11g Client
Operating SystemWindows
XP, Vista, 7, Server 2008, Server 2008 R2, and Server 2012
Linux
RedHat Enterprise Linux 5 and 6
SuSE Enterprise Linux 10 and 11
Solaris10 and 11
AIX6.1 and 7.1
ProsAll tests passed
ConsNone
Notes
  1. Before using this driver, you must install Oracle 10g client. To load this driver, you must set Oracle client libraries in your LD_LIBRARY_PATH (Linux, Solaris) or LIBPATH (AIX).
  2. TNS server name on Windows DSN setting and ServerName in Linux and Unix .odbc.ini are Oracle TNS service name defined in $ORACLE_HOME/network/admin/tnsnames.ora
  3. The default setting of "Procedure return results or uses VARRAY parameters" on Windows or ProcResults on Linux and Unix is 'No'.
  4. If you are using a stored procedure that returns a REF CURSOR, the REF CURSOR parameter (either OUT or IN OUT) must be defined as the last parameter in the parameter list of the stored procedure.
Permission Requirements
  1. Permission to EXECUTE on SYS.DBMS_UTILITY - required by MobiLink to determine if the database is running on an Oracle RAC
  2. Permission to SELECT from SYS.GV_$TRANSACTION - required by MobiLink server to do TIMESTAMP based downloads
  3. Permission to SELECT from SYS.V_$SESSION - required by MobiLink server to determine the SID and SERIAL# values of the current session
  4. Permission to SELECT from DBA_OBJECTS, SYS.GV_$LOCK and SYS.GV_$SESSION - required by MobiLink server locking/blocking detection logic.

 

Oracle 10g

 

DriverSQL Anywhere 16 Oracle ODBC Driver
Version16.00.00
StatusRecommended for use with MobiLink
Client SoftwareOracle 10g Client
Operating SystemWindows
XP, Vista, 7, Server 2003, Server 2008, and Server 2008 R2
Linux
RedHat Enterprise Linux 5
SuSE Enterprise Linux 10 and 11
Solaris10
AIX6.1
ProsAll tests passed
ConsNone
Notes
  1. Before using this driver, you must install Oracle 10g client. To load this driver, you must set Oracle client libraries in your LD_LIBRARY_PATH (Linux, Solaris) or LIBPATH (AIX).
  2. TNS server name on Windows DSN setting and ServerName in Linux and Unix .odbc.ini are Oracle TNS service name defined in $ORACLE_HOME/network/admin/tnsnames.ora
  3. The default setting of "Procedure return results or uses VARRAY parameters" on Windows or ProcResults on Linux and Unix is 'No'.
  4. If you are using a stored procedure that returns a REF CURSOR, the REF CURSOR parameter (either OUT or IN OUT) must be defined as the last parameter in the parameter list of the stored procedure.
Permission Requirements
  1. Permission to EXECUTE on SYS.DBMS_UTILITY - required by MobiLink to determine if the database is running on an Oracle RAC
  2. Permission to SELECT from SYS.GV_$TRANSACTION - required by MobiLink server to do TIMESTAMP based downloads
  3. Permission to SELECT from SYS.V_$SESSION - required by MobiLink server to determine the SID and SERIAL# values of the current session
  4. Permission to SELECT from DBA_OBJECTS, SYS.GV_$LOCK and SYS.GV_$SESSION - required by MobiLink server locking/blocking detection logic.

 

Microsoft SQL Server 2012 and 2008

 

Important: 

With any version of SQL Server, you should specify "SET NOCOUNT ON" as the first statement in all stored procedures or SQL batches executed via ODBC. Without this option, a "number of rows affected" message is sent to MobiLink for each statement executed. If you are doing a relatively large number of inserts, updates, and select into statements, these messages can fill network buffers resulting in data being lost without any indication that it is being lost!

 

Microsoft SQL Server 2012

 

DriverMicrosoft SQL Native Client ODBC Driver
Version2011.110.xxxx.xx
StatusRecommended for use with MobiLink
Client SoftwareNone
Operating SystemWindows
XP, Vista, 7, Server 2003, Server 2008, Server 2008 R2 and Server 2012
ProsAll tests passed
ConsNone
NotesBe sure to put "SET NOCOUNT ON" at the start of all stored procedures and batches that are executed via ODBC.
Permission Requirements
  1. Permission to VIEW SERVER STATE
  2. Permission to SELECT from SYS.DATABASES
  3. Permission to SELECT from SYS.DM_TRAN_LOCKS, SYS.PARTITIONS, SYS.SYSPROCESSES

 

Microsoft SQL Server 2008

 

DriverMicrosoft SQL Native Client ODBC Driver
Version2009.100.xxxx.xx
StatusRecommended for use with MobiLink
Client SoftwareNone
Operating SystemWindows
XP, Vista, 7, Server 2003, Server 2008, Server 2008 R2, and Server 2012
ProsAll tests passed
ConsNone
NotesBe sure to put "SET NOCOUNT ON" at the start of all stored procedures and batches that are executed via ODBC.
Permission Requirements
  1. Permission to VIEW SERVER STATE
  2. Permission to SELECT from SYS.DATABASES
  3. Permission to SELECT from SYS.DM_TRAN_LOCKS, SYS.PARTITIONS, SYS.SYSPROCESSES

 

IBM DB2 10.1 and 9.7

 

Important:

  • DB2 AS/400 is not supported.
  • Any DB2 Java stored procedures used in MobiLink synchronization should always immediately set autocommit to OFF, for example by using getConnection.setAutoCommit(false).

 

IBM DB2 10.1

 

DriverIBM DB2 ODBC Driver
Version10.01.00.xxx (Windows and Linux) - These drivers can be retrieved from DB2 10.1 FixPack0.
StatusRecommended for use with MobiLink
Client SoftwareDB2 UDB Client 10.1
Operating SystemWindows
XP, Vista, 7, Server 2003, Server 2008 R2, and Server 2012
Linux
RedHat Enterprise Linux 5 and 6
SuSE Enterprise Linux 10 and 11
Ubuntu 10.0.4 and 12.0.4
ProsAll tests passed
ConsNone
Notes
  1. The ODBC driver version must be 10.01.00.xxxx. Older versions of the IBM DB2 ODBC driver should not be use for the MobiLink server to talk to a DB2 10.1 database, because it can cause data inconsistency.
  2. If you are using timestamp-based download and if any of the download_cursor and/or download_delete_cursor scripts are implemented in stored procedure calls, either the DB2 consolidated database server must run with the configuration parameter, ConcurrentAccessResolution being set to 2 (Wait for outcome), or executing the following SQL command
CALL SET_ROUTINE_OPTS(GET_ROUTINE_OPTS() ||
  'CONCURRENTACCESSRESOLUTION WAIT FOR OUTCOME'
before creating the stored procedures for download_cursor and/or download_delete_cursor scripts is required. Then the DB2 database server will block the download cursors if there are any uncommitted operations that have modified the download cursor results. Without doing so, new data may not be downloaded to the remote databases and data inconsistency may occur.
  1. When Oracle compatibility features are enabled, DB2 supports some Oracle data types, such as, DATE, VARCHAR2, and NUMBER. These data types will behave the same as those in an Oracle database. For detailed data type mapping of these compatible data types between DB2 and SQL Anywhere/UltraLite, please see the MobiLink reference chapter in the MobiLink Server Administration manual.
  2. On Linux, you need to run 'source db2profile' to export DB2 environment variables. db2profile is in the home directory under your DB2 installation. Furthermore, you need to use the 64-bit IBM DB2 ODBC driver, libdb2.so. This 64-bit IBM DB2 ODBC driver defines SQLLEN (an ODBC data type) as a 32-bit integer, but the 64-bit MobiLink server and the other ODBC drivers on Linux define SQLLEN as a 64-bit integer. This disagreement is handled by the SQL Anywhere ODBC driver manager for Linux, when a DSN for DB2 10.1 contains the following entry:
length32=1
This is required by the 64-bit MobiLink server on Linux for DB2 10.1.
  1. Two database configuration parameters LOCKLIST and APPLHEAPSZ need to be changed for high load testing. Set LOCKLIST to 500 and APPLHEAPSZ to 1024.
Permission RequirementsPermission to SELECT from SYSIBMADM.LOCKWAITS, SNAPSHOT_APPL_INFO - required by the MobiLink server locking/blocking detection logic.

 

IBM DB2 9.7

 

DriverIBM DB2 ODBC Driver
Version9.07.300.291 on Windows (x32 and x64) and 9.07.0003 on Linux (x64) - These drivers can be retrieved from DB2 9.7 FixPack3.
StatusRecommended for use with MobiLink
Client SoftwareDB2 UDB Client 9.7
Operating SystemWindows
XP, Vista, 7, Server 2003, and Server 2008 R2
Linux
RedHat Enterprise Linux 5 and 6
SuSE Enterprise Linux 10 and 11
Ubuntu 10.0.4 and 12.0.4
ProsAll tests passed
ConsNone
Notes
  1. The ODBC driver version must be 9.0.7.xxxx. Older versions of the IBM DB2 ODBC driver should not be use for the MobiLink server to talk to a DB2 9.7 database, because it can cause data inconsistency.
  2. If you are using timestamp-based download and if any of the download_cursor and/or download_delete_cursor scripts are implemented in stored procedure calls, either the DB2 consolidated database server must run with the configuration parameter, ConcurrentAccessResolution being set to 2 (Wait for outcome), or executing the following SQL command
CALL SET_ROUTINE_OPTS(GET_ROUTINE_OPTS() ||
'CONCURRENTACCESSRESOLUTION WAIT FOR OUTCOME'
before creating the stored procedures for download_cursor and/or download_delete_cursor scripts is required. Then the DB2 database server will block the download cursors if there are any uncommitted operations that have modified the download cursor results. Without doing so, new data may not be downloaded to the remote databases and data inconsistency may occur.
  1. When Oracle compatibility features are enabled, DB2 supports some Oracle data types, such as, DATE, VARCHAR2, and NUMBER. These data types will behave the same as those in an Oracle database. For detailed data type mapping of these compatible data types between DB2 and SQL Anywhere/UltraLite, please see the MobiLink reference chapter in the MobiLink Server Administration manual.
  2. On Linux, you need to run 'source db2profile' to export DB2 environment variables. db2profile is in the home directory under your DB2 installation.
  3. Two database configuration parameters LOCKLIST and APPLHEAPSZ need to be changed for high load testing. Set LOCKLIST to 500 and APPLHEAPSZ to 1024.
Permission RequirementsPermission to SELECT from SYSIBMADM.LOCKWAITS, SNAPSHOT_APPL_INFO - required by the MobiLink server locking/blocking detection logic.

 

MySQL 5.5.16 and 5.1.3

 

MySQL 5.5.16

 

DriverMySQL ODBC Driver
Version5.01.06.00 (Win32 and 64) and 05.01.0006 (Linux x64).
StatusRecommended for use with MobiLink
Client SoftwareNone
Operating SystemWindows
XP, Vista, 7, Server 2003, Server 2008, Server 2008 R2 and Server 2012
Linux
RedHat Enterprise Linux 5
SuSE Enterprise Linux 10 and 11
Ubuntu 10.0.4
ProsAll tests passed
ConsNone
Notes
  1. Storage Engine:
MySQL offers a set of storage engines in a MySQL server and some storage engines are ACID compliant and some are not. The MobiLink server requires an ACID compliant storage engine, such as InnoDB, Falcon. Please make sure the default storage engine is ACID compliant. If the default storage engine is not ACID compliant, please make sure all the MobiLink server system tables are created using an ACID compliant storage engine.
  1. Stored Procedures:
The MySQL ODBC driver does not support inout or out parameters for stored procedure calls. Therefore, all procedures that need inout parameters must be written as functions that can return an out value.
The MobiLink server events that require inout parameters, such as authenticate_user, handle_error, modify_user must be implemented as functions and run using a select statement, like
select function_name( ?, ?, ?, ... )
and not
{ call function_name( ?, ?, ?, ... ) }
Then the MobiLink server will catch the return value properly.
If the MobiLink server scripts use named parameters, the parameters will not be changed after execution of the script. User-defined named parameters, e.g. {ml u.my_var} are thus not supported.
  1. Cursor Scripts:
The upload_fetch, download_cursor, or download_delete_cursor event may be written as a select statement and the MobiLink server uses the read-committed isolation level to execute the select statement. However, with the read-committed isolation, the MySQL ODBC driver may allow the MobiLink server to read uncommitted operations (inserts, updates and deletes). Then with this behavior, synchronization data would not be consistent between the consolidated and remote databases. This problem has been reported to MySQL.
To work around this problem, all the select statements for the upload_fetch, download_cursor, and download_delete_cursor events must contain a "lock in share mode" clause. For instance, a download_cursor script should be written as
select col1, col2, ..., coln
from a_sync_table
where last_modified > ? ... lock in share mode
if it is a select statement. With the "lock in share mode" clause, the select statement will be blocked by any uncommitted operations made by the other connections on the same table and then upload updates and download data will be consistent in the consolidated and remote databases.
  1. Linux Platforms
There are two ways to specify an ODBC configuration file on Linux:
    1. Place the file ODBC.INI (the file name must be in upper case) or symbolic link, ODBC.INI in the home directory of the current user;
    2. Create an environment variable, ODBCINI and setup this environment variable by pointing it to the real ODBC configuration file.
A sample DSN for MySQL on UNIX can be
[a_mysql_dsn]
Driver=full_path/libmyodbc5.so
server=host_name
uid=user_name
pwd=user_password
database=database_name

 

MySQL 5.1.3

 

DriverMySQL ODBC Driver
Version5.01.06.00 (Win32 and 64) and 05.01.0006 (Linux x64).
StatusRecommended for use with MobiLink
Client SoftwareNone
Operating SystemWindows
XP, Vista, 7, Server 2003, Server 2008, and Server 2008 R2
Linux
RedHat Enterprise Linux 5
SuSE Enterprise Linux 10 and 11
Ubuntu 10.0.4
ProsAll tests passed
ConsNone
Notes
  1. Storage Engine:

 

MySQL offers a set of storage engines in a MySQL server and some storage engines are ACID compliant and some are not. The MobiLink server requires an ACID compliant storage engine, such as InnoDB, Falcon. Please make sure the default storage engine is ACID compliant. If the default storage engine is not ACID compliant, please make sure all the MobiLink server system tables are created using an ACID compliant storage engine.

 

  1. Stored Procedures:

 

The MySQL ODBC driver does not support inout or out parameters for stored procedure calls. Therefore, all procedures that need inout parameters must be written as functions that can return an out value.
The MobiLink server events that require inout parameters, such as authenticate_user, handle_error, modify_user must be implemented as functions and run using a select statement, like
select function_name( ?, ?, ?, ... )
and not
{ call function_name( ?, ?, ?, ... ) }
Then the MobiLink server will catch the return value properly.
If the MobiLink server scripts use named parameters, the parameters will not be changed after execution of the script. User-defined named parameters, e.g. {ml u.my_var} are thus not supported.
  1. Cursor Scripts:

 

The upload_fetch, download_cursor, or download_delete_cursor event may be written as a select statement and the MobiLink server uses the read-committed isolation level to execute the select statement. However, with the read-committed isolation, the MySQL ODBC driver may allow the MobiLink server to read uncommitted operations (inserts, updates and deletes). Then with this behavior, synchronization data would not be consistent between the consolidated and remote databases. This problem has been reported to MySQL.

 

To work around this problem, all the select statements for the upload_fetch, download_cursor, and download_delete_cursor events must contain a "lock in share mode" clause. For instance, a download_cursor script should be written as
select col1, col2, ..., coln
from a_sync_table
where last_modified > ? ... lock in share mode

 

if it is a select statement. With the "lock in share mode" clause, the select statement will be blocked by any uncommitted operations made by the other connections on the same table and then upload updates and download data will be consistent in the consolidated and remote databases.

 

  1. Linux Platforms
There are two ways to specify an ODBC configuration file on Linux:
    1. Place the file ODBC.INI (the file name must be in upper case) or symbolic link, ODBC.INI in the home directory of the current user;
    2. Create an environment variable, ODBCINI and setup this environment variable by pointing it to the real ODBC configuration file.
A sample DSN for MySQL on UNIX can be
[a_mysql_dsn]
Driver=full_path/libmyodbc5.so
server=host_name
uid=user_name
pwd=user_password
database=database_name

Comments

Delete Document

Are you sure you want to delete this document?

Actions