7.0.2 Mobile Link の推奨 ODBC ドライバ
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 7.0.2 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)
Oracle 8 and 8i
Microsoft SQL Server 7 and 2000
IBM DB2 UDB 5.2
Sybase Adaptive Server Anywhere (ASA)
Driver
|
Adaptive Server Anywhere 7.0
|
Version
|
7.0.2
|
Status
|
Recommended for use with MobiLink.
|
Client s/w
|
None.
|
OS
|
Win32, Solaris, Linux
|
Workarounds applied by MobiLink
|
None
|
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.
|
ASA 6.0.4, 7.0.0 and 7.0.1 drivers also work with MobiLink
without additional workarounds.
Sybase Adaptive Server Enterprise
(ASE)
Driver
|
Sybase ASE ODBC Driver
|
Version
|
3.50.00.10
|
Status
|
Recommended for use with MobiLink.
|
Client s/w
|
Open Client 12.0
|
OS
|
Win32, Solaris
|
Workarounds applied by MobiLink
|
–hwf+i+j+t+v+w+A+
|
Other required workarounds
|
-hwC+
|
Pros
|
All MLR and MLB tests pass.
|
Cons
|
This driver's upload performance can degrade significantly when there are
many download_cursor and download_delete_cursor scripts that contain
many columns. The -hwC+ workaround prevents this problem.
|
Notes
|
For ASE version 11.9.2 or 12,
we recommend using the 12.0 Open Client software and the
Sybase ASE ODBC driver version 3.50.00.10.
|
Driver
|
Merant DataDirect Connect ODBC driver for Sybase
|
Version
|
3.60sp2 (3.60.00.15 in ODBC Administrator)
|
Status
|
Recommended for use with MobiLink with caveats.
|
Client s/w
|
Open Client 12.0
|
OS
|
Win32, Solaris
|
Workarounds applied by MobiLink
|
None
|
Other required workarounds
|
–hwf+i+j+t+v+w+A+
|
Pros
|
Most MLR tests and all MLB tests pass.
|
Cons
|
The only MLR failures are for
"out of range" errors when
trying to download values of -(2^63) or -(2^63)-1 into a BIGINT
column in the remote database.
This driver problem has been reported to Merant.
|
Notes
|
For Win32, Merant offers two version 3.6 drivers for ASE; one that
requires Open Client software and one that directly implements the
ASE TDS wire-level protocol.
The information above refers to the former.
The wire-protocol version is faster, but we find that
it will eventually exhaust ASE memory in the MLB tests unless the
driver is configured to use the "Partial" option for
preparing statements. Unfortunately, with the "Partial"
option enabled, we find that several MLR tests fail.
Thus we do not currently recommend using the Merant wire-protocol driver
for ASE. (The version 3.70 wire-protocol driver, which is available for
Win32, Solaris and Linux, has the same problem.) The MLR and MLB tests
pass with the driver that
requires the client (it doesn't have "ASE" in the name listed
in the ODBC Manager) when the statement preparation is set to use the
"Full" option.
|
Oracle 8 and 8i
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
|
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 MLR tests.
Passes MLB tests when run on a single processor.
|
Cons
|
Fails MLB tests when run on multiple processors.
|
Notes
|
The most functional ODBC driver from Oracle that we have tested
is version 8.0.5.8.0, when used with Net8 version 8.0.5.0.0.
This driver passes all MLR tests, and as long as it is not run on
multiple processors it also works for the MLB tests.
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.
The problem with multiple processors also happens when the
Net8 client is updated to version 8.0.5.0.3.
|
Driver
|
Merant DataDirect Connect ODBC driver for Oracle8
|
Version
|
3.70.00.00
|
Status
|
Recommended for use with MobiLink with caveats.
|
Client s/w
|
Net8 8.1.7.0.0
|
OS
|
Win32, Solaris
|
Workarounds applied by MobiLink
|
None
|
Other required workarounds
|
–hwf+i+k+n+w+A+
|
Pros
|
Passes most MLR tests.
Passes MLB tests.
|
Cons
|
Some MLR tests involving LONG VARCHAR columns failed.
Driver has problems with double-hyphen comments and
unnecessary semicolons.
MLR failures also occur with
"out of range" errors when
trying to download values of -(2^63) or -(2^63)-1 into a BIGINT
column in the remote database.
This driver problem has been reported to Merant.
|
Notes
|
For some of the MLR tests, the "SQLDescribeParam" option
needs to be enabled for the driver, but it is not needed for
the MLB tests.
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
|
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.
Fails MLR tests for LONG VARCHAR and LONG BINARY with
"ORA-24801: illegal parameter value in OCI lob function"
errors.
Fails MLB tests with
"option value changed" and
"Invalid attribute/option identifier <0>" 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.
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.
Fails MLB tests with
"option value changed" and
"Invalid attribute/option identifier <0>" errors.
|
Notes
|
With version 8.1.7.0.0 of the Oracle ODBC driver (and Net8 8.1.7.0.0),
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 8.1.7.3.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.
Fails MLB tests with conversion errors when run with multiple
MobiLink worker threads.
|
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").
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.
|
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 warning.
Driver
|
Microsoft SQL Server ODBC Driver
|
Version
|
3.60.03.19 (for SQL Server 7)
2000.80.194.00 (for SQL Server 2000)
|
Status
|
Recommended for use with MobiLink.
|
Client s/w
|
None
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
–hwq+ (for MSS 7)
–hwq+C+ (for MSS 2000)
|
Other required workarounds
|
None
|
Pros
|
Passes MLR and MLB tests.
|
Cons
|
None
|
Notes
|
The MLR tests all pass with the ODBC drivers included with
Microsoft SQL Server 7 and 2000. MLB tests run with these
drivers when the NOCOUNT option was set for all stored procedures.
|
IBM DB2 UDB 5.2
Driver
|
IBM DB2 UDB 5.2 ODBC driver
|
Version
|
Driver is included with IBM DB2 UDB 5.2.
|
Status
|
Recommended for use with MobiLink.
|
Client s/w
|
5.02.0000
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
–hwf+h+n+u+
|
Other required workarounds
|
None
|
Pros
|
Passes MLR tests.
|
Cons
|
None
|
Notes
|
MLB tests have not been run with this driver.
|
|