Recommended ODBC Drivers for 10.0.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 iAnywhere Solutions ODBC driver for that type of database. For others we recommend drivers supplied by the database vendors. The iAnywhere Solutions ODBC drivers and the MobiLink server are included in the SQL Anywhere 10 product. When iAnywhere Solutions 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.
Some ODBC drivers have different behaviors that cannot be detected by querying the driver. For these we test the driver to determine viable workarounds. 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. It then will automatically apply the required set of workarounds for that driver.
For some ODBC drivers, we are unable 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 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 10.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 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:
SQL Anywhere (SA)
Sybase Adaptive Server Enterprise 12.5, 15
Oracle 9i, 10g
Microsoft SQL Server 2000, 2005
IBM DB2
For detailed supported consolidated databases, please refer to http://www.sybase.com/detail?id=1042323#ConsDB.
SQL Anywhere (SA)
|
Driver
|
SQL Anywhere 10.0
|
|
Version
|
10.0.0
|
|
Status
|
Recommended for use with MobiLink.
|
|
Client s/w
|
None.
|
|
OS
|
Windows
|
200x, XP.
|
|
Linux
|
Redhat Enterprise Linux 4 SuSE 9.1, 9.1 x86_64, 10 Supported where the kernel/glibc versions are within the ranges specified on the SA Linux support matrix.
|
|
Solaris
|
8, 9, 10
|
|
AIX
|
5.2, 5.3
|
|
Mac OS
|
10.4 on Intel x86 processor
|
|
Workarounds applied by MobiLink
|
-hwc+
|
|
Other required workarounds
|
None
|
|
Pros
|
All tests pass.
|
|
Cons
|
None.
|
|
Notes
|
None
|
Sybase Adaptive Server Enterprise 12.5, 15
|
Driver
|
Sybase Adaptive Server Enterprise ODBC driver
|
|
Version
|
15.0.0.140( This version is available by downloading the ESD#6 of ASE 15.0 SDK )
|
|
Status
|
Recommended for use with MobiLink with caveats.
|
|
Client s/w
|
None
|
|
OS
|
Windows
|
200x, XP.
|
|
Linux
|
Redhat Enterprise Linux 4 SuSE 10
|
|
Workarounds applied by MobiLink
|
-hwi+
|
|
Other required workarounds
|
None
|
|
Pros
|
All performance tests pass Passes most regression tests
|
|
Cons
|
1. Fetching a zero value from a numeric column binding with SQL_CHAR will return the value "0.". 2. On Linux, if set UseCursor=1, the synchronization tables can't be dropped after synchronization.
|
|
Notes
|
You need to apply ASE 12.5 ESD#1 for ASE 12.5 server.
Always set UseCursor to zero on Linux.
Always set ServerInitiatedTransactions to zero
Set AnsiNull to 1, if the "where clauses" of any of the upload and download scripts may have the clause of "column_name = NULL"
On Linux, you need to set SYBASE environment variable to the directory where you install ASE SDK1500, otherwise, you will get the error "Could not load code page for requested charset".
|
Oracle 9i, 10g
We do not recommend any ODBC drivers from Oracle. All of the ones from Oracle that we have tested have had multi-threading issues. Use one of the following drivers instead.
|
Driver
|
iAnywhere Solutions 10 - Oracle Wire Protocol ODBC Driver DataDirect Oracle Wire Protocol ODBC Driver
|
|
Version
|
5.10.0124(B0080,U0044) (Win32), 5.10.0124(B0080,U0044)( Linux ), 5.10.0124(B0080,U0044)( Solaris ), 5.10.0124(B0080,U0044)( AIX )
|
|
Status
|
Recommended for use with MobiLink -- This driver must be purchased from DataDirect
|
|
Client s/w
|
None
|
|
OS
|
Windows
|
2000, XP, 2003( 32 bit).
|
|
Linux
|
Redhat Enterprise Linux 4.0 SuSE Linux Enterprise 9.1, 10
|
|
Solaris
|
8, 9, 10
|
|
AIX
|
5.2, 5.3
|
|
Workarounds applied by MobiLink
|
None
|
|
Other required workarounds
|
None
|
|
Pros
|
All tests pass
|
|
Cons
|
The BINARY_FLOAT and BINARY_DOUBLE data types, new in Oracle 10g, are not supported. |
|
Notes
|
The file name of the driver is wqora21.xxx, where xxx refers to dll, so or sl.
This driver supports Oracle 9i and Oracle 10g, including RAC feature.
When setting up the DSN, on Win32, don't set "Enable Static Cursors for Long Data"; on Unix, don't set EnableStaticCursorsForLongData=1, since that will adversely affect MobiLink performance. "Application Using Threads" should always be enabled on Win32. The equivalent option "ApplicationUsingThreads=1" should be set on Unix.
Enable "Procedure Returns Results" on Win32 or set "ProcedureRetResults=1" on Unix if you want stored procedures to return result sets.
On Unix, EnableScrollableCursor=1 should be set, otherwise, it will fail to unlock the driver.
|
Microsoft SQL Server 2005, 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!
SQL Server 2005
SQL Server 2000
SQL Server 2005
|
Driver
|
Microsoft SQL Native Client ODBC Driver
|
|
Version
|
2005.90.2047.00
|
|
Status
|
Recommended for use with MobiLink.
|
|
Client s/w
|
None
|
|
OS
|
Win32
|
|
Workarounds applied by MobiLink
|
-hwe+j+f+
|
|
Other required workarounds
|
None
|
|
Pros
|
Passes all tests.
|
|
Cons
|
None
|
|
Notes
|
Be sure to put "SET NOCOUNT ON" at the start of all stored procedures and batches that are executed via ODBC.
For SQL Server, using the ODBC convention for calling stored procedures: { call MyMSSProc(?, ?, ? ) } may cause problems. Please use the native calling convention instead: exec MyMSSProc ?, ?, ?
|
SQL Server 2000
|
Driver
|
Microsoft SQL Server ODBC Driver
|
|
Version
|
2000.85.1117.00
|
|
Status
|
Recommended for use with MobiLink.
|
|
Client s/w
|
None
|
|
OS
|
Win32
|
|
Workarounds applied by MobiLink
|
-hwe+j+
|
|
Other required workarounds
|
None
|
|
Pros
|
Passes all tests.
|
|
Cons
|
None
|
|
Notes
|
Be sure to put "SET NOCOUNT ON" at the start of all stored procedures and batches that are executed via ODBC.
For SQL Server 2000, the driver has problems with the ODBC convention for calling stored procedures: { call MyMSSProc(?, ?, ? ) } You should instead use the native calling convention: exec MyMSSProc ?, ?, ?
|
IBM DB2
Important:
- MobiLink only supports the DB2 on Windows, Linux and Unix. DB2 AS/400 and DB2 mainframe are 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).
DB2 UDB 8.x
DB2 UDB 8.x
|
Driver
|
IBM DB2 UDB ODBC Driver
|
|
Version
|
8.01.11.973(Win32), 8.02.0000(Linux, Solaris, AIX)
|
|
Status
|
Recommended for use with MobiLink.
|
|
Client s/w
|
DB2 UDB Client 8.1+FixPak 7 or DB2 UDB 8.2
|
|
OS
|
Windows
|
200x, XP.
|
|
Linux
|
Redhat Enterprise Linux 4 SuSE 9.1, 10
|
|
Solaris
|
8, 9, 10
|
|
AIX
|
5.2, 5.3
|
|
Workarounds applied by MobiLink
|
-hwh+
|
|
Other required workarounds
|
None
|
|
Pros
|
Passes all tests
|
|
Cons
|
With "Long object binary treatment" set to "AS LONGVAR data", all BLOB, CLOB, LONG VARCHAR, LONG VARCHAR FOR BIT DATA tests will fail, always set to "AS LOB data".
|
|
Notes
|
On Linux, Solaris, AIX, you need to source db2profile to export DB2 environment variables. db2profile is in your DB2 install home directory.
In situation where the MobiLink is under load, you need to change two database configuration parameters LOCKLIST and APPLHEAPSZ, set LOCKLIST to 500 and APPLHEASZ to 1024.
The CHR() function of DB2 UDB 8.1 changes 0x00 to 0x20.
|