Isolation Levels

ODBC supports five isolation levels. For information about ODBC isolation levels, see SQLSetConnectOption in the Microsoft ODBC 2.0 Programmer's Reference and SDK Guide. The Open Data Services ODBC driver sends the appropriate string from the IDS_ISOLATION_OFFSET section when the SQLSetConnectOption SQL_TXN_ISOLATION option is set.

If the string is empty, a SQL_ERROR with a SQL State of S1C00 is returned. The value of the SQL_TXN_ISOLATION_OPTION string in the SQLGetInfo section needs to match the IDS_ISOLATION_OFFSET strings that are not empty. The value of the SQL_DEFAULT_TXN_ISOLATION string needs to match the default isolation level of the DBMS. If the default isolation level can be configured on the gateway or DBMS and can't be obtained using SQL statements, be sure to include the proper initialization string to set the default to the value specified in SQL_DEFAULT_TXN_ISOLATION. For more information, see Gateway Initialization.

Some DBMSs have a single isolation level or have a configurable single isolation level. In this case, the SQL_DEFAULT_TXN_ISOLATION string needs to return that level. The SQL_TXN_ISOLATION_OPTION would return 0, since the application cannot change levels and the IDS_ISOLATION_OFFSET strings would be empty.

If IDS_FEATURE_HOLDLOCK_SUPPORT is set to Y, none of the IDS_ISOLATION_OFFSET strings are used. In this case, the Open Data Services ODBC driver behaves as if it were connected to SQL Server, adding the HOLDLOCK keyword after table names when the SQLSetConnectOption SQL_TXN_ISOLATION option is set to SQL_TXN_SERIALIZABLE.