El controlador CLI/ODBC/JDBC se puede configurar mediante el Asistente de configuración del cliente o el ODBC Driver Manager (si está instalado en el sistema) o editando manualmente el archivo db2cli.ini. Para obtener más detalles, consulte el manual DB2 Client Installation Guide o el manual CLI Guide and Reference.
El comportamiento por omisión del controlador DB2 CLI/ODBC puede modificarse especificando valores para las palabras clave PATCH1 y PATCH2 mediante el archivo db2cli.ini o mediante las API CLI SQLDriverConnect() o SQLBrowseConnect().
La palabra clave PATCH1 se especifica añadiendo todas las palabras clave que el usuario desea establecer. Por ejemplo, si se especificasen los parches 1, 2 y 8, PATCH1 tendría el valor 11. A continuación encontrará una descripción de cada valor de la palabra clave y su efecto en el controlador:
1 - Hace que el controlador busque "count(exp)" y lo sustituya por "count(distinct exp)". Es necesario porque algunas versiones de DB2 soportan la sintaxis "count(exp)" y esta sintaxis la generan algunas aplicaciones ODBC. Es necesario para aplicaciones Microsoft cuando el servidor no soporta la sintaxis "count(exp)". 2 - Algunas aplicaciones ODBC se interrumpen cuando se devuelve SQL_NULL_DATA en la función SQLGetTypeInfo() para las columnas LITERAL_PREFIX o LITERAL_SUFFIX. Esto fuerza al controlador a devolver una serie vacía en su lugar. Es necesario para Impromptu 2.0. 4 - Fuerza al controlador a tratar los datos de indicación de la hora de entrada como datos de fecha si la parte de la hora y la fracción de la indicación de la hora son cero. Necesario para Microsoft Access. 8 - Fuerza al controlador a tratar los datos de indicación de la hora de entrada como datos de hora si la parte de fecha de la indicación de la hora es 1899-12-30. Necesario para Microsoft Access. 16 - No utilizado. 32 - Fuerza al controlador a no devolver información acerca de las columnas SQL_LONGVARBINARY y SQL_LONGVARGRAPHIC. Para la aplicación, parece como si no estuviesen soportados los campos largos. Necesario para Lotus 123. 64 - Fuerza al controlador a terminar en NULL las series de salida gráficas. Necesario para Microsoft Access en un entorno de doble byte. 128 - Fuerza al controlador a dejar que la consulta "SELECT Config, nValor FROM MSysConf" vaya al servidor. Actualmente el controlador devuelve un error con el valor SQLSTATE asociado de S0002 (tabla no encontrada). Es necesario si el usuario ha creado esta tabla de configuración en la base de datos y desea que la aplicación acceda a ella. 256 - Fuerza al controlador a devolver primero las columnas de clave primaria primero en la llamada SQLStatistics(). Actualmente, el controlador devuelve los índices clasificados por nombre de índice, que es el comportamiento estándar de ODBC. 512 - Fuerza al controlador a devolver FALSE en SQLGetFunctions() para SQL_API_SQLTABLEPRIVILEGES y SQL_API_SQLCOLUMNPRIVILEGES. 1024 - Fuerza al controlador a devolver SQL_SUCCESS en lugar de SQL_NO_DATA_FOUND en SQLExecute() o SQLExecDirect() si la sentencia UPDATE o DELETE ejecutada no afecta a ninguna fila. Necesario para aplicaciones Visual Basic. 2048 - No se utiliza. 4096 - Fuerza al controlador a no emitir COMMIT después de cerrar un cursor cuando se está en modalidad de confirmación automática. 8192 - Fuerza al controlador a devolver un conjunto de resultados adicional después de invocar un procedimiento almacenado. Este conjunto de resultados es un conjunto de resultados de una fila que consta de los valores de salida del procedimiento almacenado. Pueden acceder a él aplicaciones Powerbuild. 32768 - Fuerza al controlador a realizar trabajos de aplicaciones de consulta Microsoft con sinónimos DB2 MVS. 65536 - Fuerza al controlador a insertar manualmente una "G" delante de los literales de caracteres que son de hecho literales gráficos. Este parche debe suministrarse siempre cuando se trabaja en un entorno de doble byte. 131072 - Fuerza al controlador a describir una columna de indicación de la hora como una columna CHAR(26) cuando forma parte de un índice exclusivo. Necesario para aplicaciones Microsoft. 262144 - Fuerza al controlador a usar la tabla del seudocatálogo db2cli.procedures en lugar de las tablas SYSCAT.PROCEDURES y SYSCAT.PROCPARMS. 524288 - Fuerza al controlador a usar SYSTEM_TABLE_SCHEMA en lugar de TABLE_SCHEMA cuando se efectúa una consulta de tabla del sistema a un sistema DB2/400 V3.x. Esto da como resultado un mejor rendimiento. 1048576 - Fuerza al controlador a tratar una serie de longitud cero mediante SQLPutData() como SQL_NULL_DATA.
La palabra clave PATCH2 difiere de la palabra clave PATCH1. En este caso, se especifican múltiples parches utilizando comas como separadores. Por ejemplo, si se han especificado los parches 1, 4 y 5, PATCH2 tendría un valor de "1,4,5". A continuación encontrará una descripción de cada valor de la palabra clave y su efecto en el controlador:
1 - Fuerza al controlador a convertir a mayúsculas el nombre del procedimiento almacenado de una sentencia CALL. 2 - No se utiliza. 3 - Fuerza al controlador a convertir a mayúsculas todos los argumentos para llamadas de esquema. 4 - Fuerza al controlador a devolver el conjunto de resultados como en la Versión 2.1.2 para llamadas a esquemas (es decir, SQLColumns(), SQLProcedureColumns(), etcétera) en lugar de devolver el conjunto de resultados como en la Versión 5 como conjunto de resultados. 5 - Fuerza al controlador a no optimizar el proceso de columnas VARCHAR de entrada, en las que el puntero para los datos y el puntero para la longitud son consecutivos en la memoria. 6 - Fuerza al controlador a devolver el mensaje que indica que los cursores desplazables no están soportados. Es necesario para programas Visual Basic si el cliente DB2 es de la Versión 5 y el servidor es DB2 UDB Versión 5. 7 - Fuerza al controlador a correlacionar todos los tipos de datos de columnas GRAPHIC con los tipo de datos de columnas CHAR. Es necesario en un entorno de doble byte. 8 - Fuerza al controlador a ignorar los argumentos de búsqueda del catálogo en llamadas a esquemas. 9 - No confirma en el Cierre rápido de un cursor 10 - No se utiliza 11 - Informa de que el nombre del catálogo está soportado, (procedimientos almacenados VB) 12 - Elimina las comillas de los argumentos de llamadas a esquemas, (Visual Interdev) 13 - No añade palabras clave de db2cli.ini a la serie de conexión de salida 14 - Ignora el nombre de esquema en SQLProcedures() y SQLProcedureColumns() 15 - Utiliza siempre el punto como separador decimal en salida de caracteres 16 - Fuerza la devolución de información de descripción para cada apertura 17 - No devuelve nombres de columnas en la descripción 18 - Intenta sustituir los literales por marcadores de parámetros 19 - Actualmente, DB2 MVS V4.1 no soporta la sintaxis ODBC en la que están permitidos los paréntesis en la cláusula ON de una cláusula de unión exterior. La activación de esta PATCH2 hará que el controlador IBM DB2 ODBC desmiembre los paréntesis cuando la cláusula de unión exterior esté en una secuencia de escape ODBC. Esta PATCH2 sólo debe utilizarse en DB2 MVS 4.1. 20 - Actualmente, DB2 en MVS no soporta el predicado BETWEEN con marcadores de parámetros como operandos (expresión ? BETWEEN ?). La activación de este parche provocará que el Controlador IBM ODBC vuelva a escribir el predicado como (expresión >= ? y expresión <= ?). 21 - Establece todos los parámetros de sólo OUTPUT para procedimientos almacenados en SQL_NULL_DATA 22 - Esta PATCH2 hace que el controlador IBM ODBC informe de la unión OUTER como no soportada. Es para la aplicación que genera SELECT DISTINCT col1 u ORDER BY col1 cuando utiliza una sentencia de unión externa donde col1 tiene una longitud superior a 254 caracteres y hace que DB2 UDB devuelva un error (ya que DB2 UDB no soporta columnas superiores a 254 bytes en este uso 23 - No optimiza la entrada para parámetros vinculados con cbColDef=0 24 - Solución de Access para correlacionar valores de Tiempo como Caracteres 25 - Solución de Access para columnas decimales - elimina los ceros de cola en la representación de char 26 - No devuelve sqlcode 464 a la aplicación - indica que se devuelven conjuntos de resultados 27 - Fuerza SQLTables para que utilice el valor de palabra clave TABLETYPE, incluso si la aplicación especifica un valor válido 28 - Describe columnas reales como columnas dobles 29 - Solución ADO para columnas decimales - elimina los ceros iniciales para los valores x, donde 1 > x > -1 (Sólo es necesario para algunas versiones de MDAC) 30 - Inhabilita la optimización de puesta en antememoria de procedimiento almacenado 31 - Informa de estadísticas para alias en la llamada a SQLStatistics 32 - Altera temporalmente el proceso 4 del código de razón sqlcode -727 33 - Devuelve la versión ISO de la indicación de la hora cuando se convierte a char (al contrario de la versión ODBC) 34 - Informa de las columnas CHAR FOR BIT DATA como CHAR 35 - Informa de un TABLENAME no válido cuando se solicita SQL_DESC_BASE_TABLE_NAME - optimización de sólo lectura ADO 36 - Reservado 37 - Reservado