Recommended ODBC Drivers for 8.0.0
The MobiLink server uses ODBC 3.0 to connect to the consolidated database. The information presented here is intended to help you choose which ODBC driver to use with your consolidated database.
In theory MobiLink should be able to use as a consolidated database any ODBC 3.0 data source that supports the optional ODBC functionality required by MobiLink, but in practice ODBC implementations vary widely. Different ODBC drivers have different capabilities, and the MobiLink server attempts to adapt to these by querying the driver. Typically the driver also has behavior (or bugs) that can't be detected by querying the driver. For these we test the driver in an attempt to find viable workarounds. Some workarounds are used for different consolidated database vendors, while others are specific to a vendor and even a specific version.
Once we have identified a set of workarounds that are required for a driver, we update the MobiLink server so that it recognizes the version of the driver, and automatically associates the set of workarounds with that version.
For some ODBC drivers, we are not able to develop viable workarounds for all issues. In these cases, you still may be able to use the driver if your synchronizations do not require the missing driver functionality.
For ease of testing, and to allow MobiLink to apply workarounds to drivers that it does not recognize, the MobiLink workarounds can be set by the undocumented –hw command-line switch. This switch and its associated workarounds are not documented because indiscriminate use of workarounds could cause data corruption or software errors.
Note that after workaround sets are identified, we can make future versions of MobiLink apply the associated hidden workaround switches automatically. Thus if you chose to use hidden workarounds directly, you may not need them with newer versions of the MobiLink server. Continued use of hidden switches with a newer MobiLink may even cause problems or reduced performance.
Driver testing
We use two types of testing of ODBC drivers with MobiLink.
The first, referred to as MLR, is a comprehensive suite of regression tests that exercise synchronization functionality. If some specific MLR 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 MLR 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, referred to as MLB, 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 will fail with multiple simultaneous connections or under high load while running on multiple processors. In these cases, you may need to restrict MobiLink to run on a single processor (via the -zt 1 switch) or limit it to a single worker thread (via the -w 1 switch).
Recommended Drivers
As a result of our testing, we recommend the following ODBC drivers for use with version 8.0.0 of the MobiLink server. Unless specified otherwise, the recommendations refer to the Windows version of MobiLink.
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:
Sybase Adaptive Server Anywhere (ASA)
Sybase Adaptive Server Enterprise (ASE)
Microsoft SQL Server 7 and 2000
Sybase Adaptive Server Anywhere (ASA)
|
Driver |
Adaptive Server Anywhere 8.0 |
|
Version |
8.0.0 |
|
Status |
Recommended for use with MobiLink. |
|
Client s/w |
None. |
|
OS |
Win32 |
|
Workarounds applied by MobiLink |
-hwc+o+ |
|
Other required workarounds |
None |
|
Pros |
All MLR and MLB tests pass. |
|
Cons |
None. |
|
Notes |
The MLR tests all pass with the ODBC driver included with ASA, and the MLB testing shows no problems with multiple clients simultaneously synchronizing through a MobiLink server running on a multi-processor computer. On Unix and Linux, make sure the directory containing the symbolic link to your ASA ODBC driver is first in your LD_LIBRARY_PATH. This prevents the loading of the driver manager used by the non-ASA ODBC drivers. The ASA ODBC driver must not be used with this driver manager. |
ASA 6.0.4, 7.0.0, 7.0.1, 7.0.2 and 7.0.3 drivers also work with MobiLink without additional workarounds.
Sybase Adaptive Server Enterprise (ASE)
|
Driver |
iAnywhere Solutions 8 - Sybase ASE |
|
Version |
4.00.00.00 |
|
Status |
Recommended for use with MobiLink with caveats -- This driver must be purchased from DataDirect |
|
Client s/w |
None |
|
OS |
Win32, Solaris, Linux |
|
Workarounds applied by MobiLink |
-hwf+i+j+t+v+w+A+ |
|
Other required workarounds |
-hwE+ |
|
Pros |
All MLR and MLB tests pass using statement-based uploads only. |
|
Cons |
Some tests show "Unclosed quote before the character string 'xx'. Versions 8.0.0.2262 and higher fix this problem. Synchronizations with cursor-based uploads fail under heavy load. |
|
Notes |
If a table has a long varchar column, use the option -hwE+. In SQL scripts, parameters (ie. question marks) that refer to NUMERIC or DECIMAL must explicitly convert to NUMERIC or DECIMAL using the CONVERT scalar function. This is being investigated. When setting up the DSN, on Win32, check the "Enable Describe Parameter" option and select the "2-Full" option for Prepare Method on Performance tab; on Solaris and Linux, set the "OptimizePrepare=2" and "SelectMethod=1". |
|
Driver |
Merant DataDirect Connect ODBC Driver for Sybase ASE |
|
Version |
3.70sp1(3.70.00.15 in ODBC Administrator) |
|
Status |
Recommended for use with MobiLink with caveats -- This driver must be purchased from DataDirect |
|
Client s/w |
None |
|
OS |
Win32, Solaris, Linux |
|
Workarounds applied by MobiLink |
-hwf+i+j+t+v+w+A+ |
|
Other required workarounds |
-hwE+ |
|
Pros |
All MLR and MLB tests pass. |
|
Cons |
Some tests case the following error: "Unclosed quote before the character string 'xx'". Versions 8.0.0.2262 and higher fix this problem. |
|
Notes |
If a table has a long varchar column, use the option -hwE+. When setting up the DSN, on Win32, check the "Enable Describe Parameter" option and select the " 2-Full " option for Prepare Method on Performance tab; on Solaris and Linux, set the " OptimizePrepare=2 " and " SelectMethod=1 ". |
Oracle 8 and 8i, Oracle 9i
We have found the greatest variability between driver versions with Oracle's ODBC drivers. In many cases, new bugs have appeared in subsequent versions of the ODBC driver so if you have an Oracle ODBC driver that works for you, then we recommend that you continue to use it. Most Oracle ODBC drivers seem to have multi-threading issues.
|
Driver |
iAnywhere Solutions 8 - Oracle 8 & 8i & 9i |
|
Version |
4.00.00.00 |
|
Status |
Recommended for use with MobiLink -- This driver must be purchased from DataDirect |
|
Client s/w |
Net8 8.1.7.0.0, Net8 8.1.7.0.1 (Linux), Net 9.0.1.1.1 |
|
OS |
Win32, Solaris, Linux |
|
Workarounds applied by MobiLink |
-hwf+i+k+w+A+ |
|
Other required workarounds |
-hwC+ required for cursor based |
|
Pros |
Pass all MLR tests; |
|
Cons |
The Oracle TIMESTAMP type is not supported by this driver. This driver has problems with double-hyphen comments and unnecessary semicolons. |
|
Notes |
This driver is the best choice for Oracle 8, 8i & 9i. When setting DSN, don't check "Enable Static Cursors for Long Data", it will affect MobiLink performance. "Application Using Threads" should always be checked. On Linux, Net8 version 8.1.7.0.1 is required, plus a patch that addresses Oracle bugs 1489496 and 1467074. It's best if the character set of the Oracle client is the same as the database server character set. |
|
Driver |
Merant DataDirect Oracle Wire Protocol ODBC Driver |
|
Version |
4.00.00.00 |
|
Status |
Not Recommended for use with MobiLink |
|
Client s/w |
None |
|
OS |
Win32, Solaris |
|
Workarounds applied by MobiLink |
-hwf+i+k+w+A+ |
|
Other required workarounds |
None |
|
Pros |
Passes most MLR tests;passes MLB tests. |
|
Cons |
This driver has memory allocation problems and crashes easily. All tests for the new-row and old-row conflict-resolution scripts (new_row_cursor, old_row_cursor, upload_new_row_insert, upload_old_row_insert) failed. This driver cannot handle BLOB or LONG RAW data of zero length. |
|
Driver |
Merant DataDirect Connect ODBC Driver for Oracle |
|
Version |
3.70 and 3.7sp1 |
|
Status |
Recommended for use with MobiLink with caveats -- This driver must be purchased from DataDirect |
|
Client s/w |
Net8 8.1.7.0.0 |
|
OS |
Win32, Solaris |
|
Workarounds applied by MobiLink |
-hwf+i+k+w+A+ |
|
Other required workarounds |
None |
|
Pros |
Passes all MLR tests; |
|
Cons |
The Oracle TIMESTAMP type is not supported by this driver. This driver has problems with double-hyphen comments and unnecessary semicolons. |
|
Notes |
When setting DSN, don't check "Enable Static Cursors for Long Data", it will affect MobiLink performance. " Application Using Threads " should always be checked. In the MLB tests, the Merant driver is significantly faster than the Oracle 8.0.5.8 driver for synchronizing downloads but somewhat slower for uploads. The driver works in the MLB tests under high load on multiple processors, but the performance benefit of using multiple processors is small: we found that throughput decreased somewhat when using more than two processors. |
|
Driver |
Oracle ODBC Driver |
|
Version |
9.00.11.00 |
|
Status |
Not recommended for use with MobiLink. |
|
Client s/w |
Oracle Net 9.0.1.1.1 |
|
OS |
Win32 |
|
Workarounds applied by MobiLink |
-hwd+k+ |
|
Other required workarounds |
None |
|
Pros |
Passes most MLR tests. Passes MLB tests when run with a single MobiLink worker thread. |
|
Cons |
The Oracle TIMESTAMP type is not supported by this driver. Fails MLB tests with conversion errors when run with multiple MobiLink worker threads. For statement-based uploads, LONG and LONG RAW synchronization failed, and the tests for zero-length BLOB and CLOB failed with a crash. For cursor-based uploads, LONG, BLOB and CLOB conflict-resolution tests failed. The test for inserting the username as an extra column (or parameter) to the new row (new_row_cursor, upload_new_row_insert) and old row (old_row_cursor, upload_old_row_insert) scripts failed. |
|
Notes |
In DSN settings, SQLGetData Extensions should be checked. This driver tends to fail with multiple simultaneous synchronizations even when running only on a single processor. Therefore we do not recommend it. The failure typically occurs as a conversion error ("ORA-01461 can bind a LONG value only for insert into a LONG column" or "ORA-01460 unimplemented or unreasonable conversion requested"). You can restrict it to work on only one synchronization at a time by limiting the number of MobiLink worker threads to one (via –w 1), but this will seriously limit throughput performance. |
|
Driver |
Oracle ODBC Driver |
|
Version |
8.0.5.8.0 |
|
Status |
Recommended for use with MobiLink with caveats. |
|
Client s/w |
Net8 8.0.5.0.0 or 8.0.5.0.3 |
|
OS |
Win32 |
|
Workarounds applied by MobiLink |
-hwd+h+k+r+s+ |
|
Other required workarounds |
-zt 1 (to restrict execution to a single processor) |
|
Pros |
Passes most MLR tests. |
|
Cons |
Tests for zero-length string and binary values fail. LONG and LONG RAW synchronization tests fail when using statement-based uploads. BLOB tests fail when using cursor-based uploads. Fails MLB tests when run on multiple processors. |
|
Notes |
When run under high load from multiple connections on multiple processors, an application exception will eventually occur in an Oracle ODBC driver DLL. Typically this occurs as an unknown exception (0xebad0000) in ORA805.DLL (which is called from OCI.DLL). On a multiple-processor computer, you can restrict MobiLink (and hence the ODBC driver) to execute on a single processor by using the –zt 1 MobiLink command-line option. |
|
Driver |
Oracle ODBC Driver |
|
Version |
8.0.5.10.0 |
|
Status |
Not recommended for use with MobiLink. |
|
Client s/w |
Net8 8.0.5.0.0 |
|
OS |
Win32 |
|
Workarounds applied by MobiLink |
-hwd+f+h+k+p+r+s+ |
|
Other required workarounds |
-hwp-q+ |
|
Pros |
Passes most MLR tests. |
|
Cons |
Fails a few MLR tests with "ORA-933: SQL command not properly ended" errors. |
|
Notes |
We were unable to determine the cause of the ORA-933 errors in the MLR tests. With version 8.0.5.10.0 of the Oracle ODBC driver, the MLB tests could not be run at all. The tests failed from driver errors about invalid attribute/option identifier and changed option values. The same problem occurs with version 8.0.5.9.0 of the Oracle ODBC driver. We have not been able to determine a viable workaround for these issues, but we are aware that some customers are able to use this driver successfully. |
|
Driver |
Oracle ODBC Driver |
|
Version |
8.1.6.2.0 |
|
Status |
Not recommended for use with MobiLink. |
|
Client s/w |
Net8 8.1.6.0.0 |
|
OS |
Win32 |
|
Workarounds applied by MobiLink |
None |
|
Other required workarounds |
-hwd+r+ -s 1 |
|
Pros |
Passes most MLR tests. |
|
Cons |
Fails MLR tests for LONG VARCHAR and LONG BINARY columns. MLR test with REAL columns failed because values uploaded were slightly different when downloaded. This is yet another good reason to stay away from imprecise types like REAL. Need to disable bulk fetching (via –s 1). Since rows must be fetched one at a time download performance is adversely affected. |
|
Notes |
MLB tests have not been performed with this driver. It may have multi-threaded problems as do all the Oracle ODBC drivers for which we have been able to do MLB testing. |
|
Driver |
Oracle ODBC Driver |
|
Version |
8.1.7.0.0 |
|
Status |
Not recommended for use with MobiLink. |
|
Client s/w |
Net8 8.1.7.0.0 |
|
OS |
Win32 |
|
Workarounds applied by MobiLink |
None |
|
Other required workarounds |
-hwd+h+k+r+ |
|
Pros |
Passes most MLR tests. |
|
Cons |
Fails MLR tests for LONG VARCHAR and LONG BINARY with "ORA-24801: illegal parameter value in OCI lob function" errors. |
|
Notes |
The MLB tests could not be run at all. The tests failed from driver errors about invalid attribute/option identifier and changed option values. We have not been able to determine a viable workaround for this issue, but we are aware that some customers are able to use this driver successfully. |
|
Driver |
Oracle ODBC Driver |
|
Version |
8.1.7.2.0 |
|
Status |
Not recommended for use with MobiLink. |
|
Client s/w |
Net8 8.1.7.0.0 |
|
OS |
Win32 |
|
Workarounds applied by MobiLink |
None |
|
Other required workarounds |
-hwd+h+k+n+r+ |
|
Pros |
Passes most MLR tests. Passes MLB tests when run with a single MobiLink worker thread. |
|
Cons |
Fails many MLR tests when executing a stored procedure that is part of the setup for several tests. |
|
Notes |
Version 8.1.7.2.0 of the Oracle ODBC driver (with Net8 8.1.7.0.0) tends to fail with multiple simultaneous synchronizations even when running only on a single processor. Therefore we do not recommend it. The failure typically occurs as a conversion error ("ORA-01461 can bind a LONG value only for insert into a LONG column" or "ORA-01460 unimplemented or unreasonable conversion requested"). |
Microsoft SQL Server 7 and 2000
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!
|
Driver |
Microsoft SQL Server ODBC Driver |
|
Version |
3.60.03.19 (for SQL Server 7) |
|
Status |
Recommended for use with MobiLink. |
|
Client s/w |
None |
|
OS |
Win32 |
|
Workarounds applied by MobiLink |
-hwq+e+C+ ( For MSS 2000 ) |
|
Other required workarounds |
None |
|
Pros |
Passes all MLR and MLB tests. |
|
Cons |
None |
|
Notes |
Be sure to put "SET NOCOUNT ON" at the start of all stored procedures. For SQL Server 2000, the driver has problem with The MLR tests all pass with the ODBC drivers included with Microsoft SQL Server 7 and 2000. |
IBM DB2 UDB 7.1 , 5.2
|
Driver |
IBM DB2 UDB 7.1 ODBC driver |
|
Version |
7.01.00.00 |
|
Status |
Recommended for use with MobiLink with caveats. |
|
Client s/w |
DB2 UDB Client 7.01.0000 |
|
OS |
Win32 |
|
Workarounds applied by MobiLink |
-hwf+h+n+u+A+ |
|
Other required workarounds |
-hwE+ |
|
Pros |
Passes most MLR tests and MLB tests. |
|
Cons |
Tests for CLOB, BLOB and LONG VARCHAR FOR BIT DATA fail when any of the following scripts are used: upload_fetch, upload_new_row_insert, and upload_old_row_insert. Cursor-based uploads of BLOB and CLOB failed. Tests for LONG VARCHAR and LONG VARCHAR FOR BIT DATA fail when using the new_row_cursor or old_row_cursor scripts. |
|
Notes |
When configuring the advanced DSN settings, choose the "As LONGVAR data" item under "Long object binary treatment" on the Data Type tab. LONG VARCHAR and LONG VARCHAR FOR BIT DATA need -hwE+ for cursor-based uploads. For statement-based uploads, most LONG VARCHAR and LONG VARCHAR FOR BIT DATA tests passed without -hwE+. However, it is safest to set -hwE+ for statement-based uploads, too. Statement-based uploads perform better than cursor-based uploads, especially dealing with CLOB, BLOB, LONG VARCHAR and LONG VARCHAR FOR BIT DATA. We suggest using statement-based scripts for these data types. |
|
Driver |
IBM DB2 UDB 5.2 ODBC driver |
|
Version |
5.02.00.00 |
|
Status |
Recommended for use with MobiLink with caveats. |
|
Client s/w |
DB2 UDB Client 5.02.0000 |
|
OS |
Win32 |
|
Workarounds applied by MobiLink |
-hwf+h+n+u+A+ |
|
Other required workarounds |
-hwE+ |
|
Pros |
Passes most MLR tests and MLB tests. |
|
Cons |
Tests for CLOB, BLOB and LONG VARCHAR FOR BIT DATA fail when any of the following scripts are used: upload_fetch, upload_new_row_insert, and upload_old_row_insert. Cursor-based uploads of BLOB and CLOB failed. Tests for LONG VARCHAR and LONG VARCHAR FOR BIT DATA fail when using the new_row_cursor or old_row_cursor scripts. |
|
Notes |
When configuring the advanced DSN settings, choose the "As LONGVAR data" item under "Long object binary treatment" on the Data Type tab. LONG VARCHAR and LONG VARCHAR FOR BIT DATA need -hwE+ for cursor-based uploads. For statement-based uploads, most LONG VARCHAR and LONG VARCHAR FOR BIT DATA tests passed without -hwE+. However, it is safest to set -hwE+ for statement-based uploads, too. Statement-based uploads perform better than cursor-based uploads, especially dealing with CLOB, BLOB, LONG VARCHAR and LONG VARCHAR FOR BIT DATA. We suggest using statement-based scripts for these data types. |
|
Driver |
Merant DataDirect DB2 Wire Protocol ODBC Driver |
|
Version |
4.00.00.00 |
|
Status |
Not Recommended for use with MobiLink. |
|
Client s/w |
None |
|
OS |
Win32, Solaris |
|
Workarounds applied by MobiLink |
-hwf+h+n+u+ |
|
Other required workarounds |
-hwC+ |
|
Pros |
Passes many MLR tests on Solaris. |
|
Cons |
MobiLink server is unable to start under Windows. This driver doesn't support the BLOB data type. Many tests failed because of the error: "L517 cursor C1 does not identify a prepared select statement". This happpens when MobiLink uses opened cursors to process a second row of data. |
|
Driver |
Merant DataDirect Connect ODBC Driver for IBM DB2 UDB |
|
Version |
3.7 and 3.7 sp1 |
|
Status |
Not Recommended for use with MobiLink. |
|
Client s/w |
5.02.0000, 7.01.0000 |
|
OS |
Win32 |
|
Workarounds applied by MobiLink |
-hwf+h+n+u+ |
|
Other required workarounds |
None |
|
Pros |
None. |
|
Cons |
No tests pass. |
|
Notes |
The DataDirect Connect ODBC Driver for DB2 both version 3.7 and 3.7sp1 are not recommended for use with MobiLink. Version 3.7 only supports one connection and short schema names (18 characters or less). Version 3.7 sp1 supports multiple connections and long schema names, but MobiLink crashes when using it. |

Back to Top