Desarrollo de aplicaciones: Programación de aplicaciones del cliente

8 8 8

Palabra clave de configuración de CLI/ODBC OleDbReportIsLongForLongTypes

8
8
Descripción de la palabra clave:
8
Crear tipos de datos LONG con distintivo de OLE DB como DBCOLUMNFLAGS_ISLONG. 8
8
Sintaxis de la palabra clave en db2cli.ini:
8
OleDbReportIsLongForLongTypes = 0 | 1 8
8
Atributo de sentencia equivalente:
8
SQL_ATTR_REPORT_ISLONG_FOR_LONGTYPES_OLEDB 8
8
Valor por omisión:
8
Los tipos LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC 8y LONG VARGRAPHIC FOR BIT DATA) no tienen establecido el distintivo 8DBCOLUMNFLAGS_ISLONG, lo cual puede hacer que las columnas se utilicen en la 8cláusula WHERE. 8
8
Notas sobre la utilización:
8
  8
8
8

El motor de cursor de cliente de OLE DB y el Creador de mandatos de OLE DB 8.NET Data Provider generan sentencias de actualización y supresión basadas en la información de 8columna que proporciona 8IBM DB2 OLE DB Provider. Si la sentencia generada contiene un tipo LONG en la 8cláusula WHERE, la sentencia fallará porque los tipos LONG no se pueden 8utilizar en una búsqueda con un operador de igualdad. El establecimiento 8de la palabra clave OleDbReportIsLongForLongTypes en 1 hará que 8IBM DB2 OLE DB Provider informe de tipos LONG (LONG 8VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC y LONG VARGRAPHIC FOR 8BIT DATA) con el distintivo DBCOLUMNFLAGS_ISLONG establecido. Esto evitará 8que se utilicen columnas largas en la cláusula WHERE.

8 8 8

Palabra clave de configuración de CLI/ODBC OleDbSQLColumnsSortByOrdinal

8
8
Descripción de la palabra clave:
8
Hacer que IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) de OLE DB devuelva 8un conjunto de filas clasificadas según la columna ORDINAL_POSITION. 8
8
Sintaxis de la palabra clave en db2cli.ini:
8
OleDbSQLColumnsSortByOrdinal = 0 | 1 8
8
Atributo de sentencia equivalente:
8
SQL_ATTR_SQLCOLUMNS_SORT_BY_ORDINAL_OLEDB 8
8
Valor por omisión:
8
IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) devuelve el conjunto de 8filas clasificado según las columnas TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. 8
8
Notas sobre la utilización:
8
  8
8
8

La especificación de Microsoft OLE DB requiere que IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) 8devuelva el conjunto de filas clasificadas según las columnas TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, 8COLUMN_NAME. IBM DB2 OLE DB Provider se ajusta a la especificación. Sin 8embargo, las aplicaciones que utilizan el proveedor 8Microsoft ODBC Bridge (MSDASQL) generalmente 8se han codificado para obtener el conjunto de filas clasificado 8según ORDINAL_POSITION. El establecimiento de la palabra clave 8OleDbSQLColumnsSortByOrdinal en 1 hará que el proveedor devuelva un conjunto de 8filas clasificado según ORDINAL_POSITION.

8 8 8

Grupo de propiedades 8DB2 Data Source para IBM DB2 OLE DB Provider

8

IBM DB2 OLE DB Provider ha añadido un nuevo grupo de propiedades: DB2 Data Source. 8El conjunto de propiedades para 8DB2 Data Source es DBPROPSET_DB2DATASOURCE.

8

El GUID para el conjunto de propiedades es 8{0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}

8

DBPROPSET_DB2DATASOURCE tiene tres propiedades:

8 8
8DB2PROP_REPORTISLONGFORLONGTYPES 8

8
#define DB2PROP_REPORTISLONGFORLONGTYPES 4
8Grupo de propiedades: DB2 Data Source
8Conjunto de propiedades: DB2PROPSET_DATASOURCE
8Tipo: VT_BOOL
8R/W típica: R/W
8Descripción: Informar IsLong para Tipos grandes
8

El motor de cursor de cliente de OLE DB y el Creador de mandatos de OLE DB 8.NET Data Provider generan sentencias de actualización y supresión basadas en 8la información de columna que proporciona 8IBM DB2 OLE DB Provider. Si la sentencia generada contiene un tipo LONG en la 8cláusula WHERE, la sentencia fallará porque los tipos LONG no se pueden 8utilizar en una búsqueda con un operador de igualdad.

8 8888888888888888888
Tabla 17. Valores de DB2PROP_REPORTISLONGFORLONGTYPES
Valores Significado
VARIANT_TRUE Hará que 8IBM DB2 OLE DB Provider informe de tipos LONG (LONG 8VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC y LONG VARGRAPHIC FOR 8BIT DATA) con el distintivo DBCOLUMNFLAGS_ISLONG establecido. Esto evitará que 8se utilicen columnas largas en la cláusula WHERE.
VARIANT_FALSE DBCOLUMNFLAGS_ISLONG no se ha establecido para LONG 8VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC y LONG VARGRAPHIC FOR BIT DATA. Este es el valor por omisión.
8
8DB2PROP_RETURNCHARASWCHAR 8

8
#define DB2PROP_RETURNCHARASWCHAR 2
8Grupo de propiedades: DB2 Data Source
8Conjunto de propiedades: DB2PROPSET_DATASOURCE
8Tipo: VT_BOOL
8R/W típica: R/W
8Descripción: Devolver Char como WChar
8

8 8888888888888888888
Tabla 18. Valores de DB2PROP_RETURNCHARASWCHAR
Valores Significado
VARIANT_TRUE OLE DB describe las columnas de tipo CHAR, VARCHAR, LONG 8VARCHAR o CLOB como DBTYPE_WSTR. La página de códigos de los datos implicados 8en ISequentialStream será UCS-2. Este es el valor por omisión.
VARIANT_FALSE OLE DB describe las columnas de tipo CHAR, VARCHAR, LONG 8VARCHAR o CLOB como DBTYPE_STR. La página de códigos de los datos implicados en 8ISequentialStream será la página de códigos local del cliente.
8
8DB2PROP_SORTBYORDINAL 8

8
#define DB2PROP_SORTBYORDINAL 3
8Grupo de propiedades: DB2 Data Source
8Conjunto de propiedades: DB2PROPSET_DATASOURCE
8Tipo: VT_BOOL
8R/W típica: R/W
8Descripción: Clasificar por ordinal
8

La especificación de 8Microsoft 8OLE DB requiere que IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) devuelva el 8conjunto de filas clasificadas según las columnas TABLE_CATALOG, TABLE_SCHEMA, 8TABLE_NAME, COLUMN_NAME. IBM 8DB2 8OLE DB Provider se ajusta a la especificación. Sin embargo, las aplicaciones 8que utilizan el proveedor 8Microsoft 8ODBC Bridge (MSDASQL) generalmente se han codificado para obtener el conjunto 8de filas clasificado según ORDINAL_POSITION.

8 8888888888888888888
Tabla 19. Valores de DB2PROP_SORTBYORDINAL
Valores Significado
VARIANT_TRUE Hará que el proveedor devuelva un conjunto de filas 8clasificadas según ORDINAL_POSITION.
VARIANT_FALSE Hará que el proveedor devuelva un conjunto de filas 8clasificado según TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Este es el valor por omisión.
8 8 8

Sintaxis de URL incorrecta en el diagrama de sintaxis de DB2Binder

8

En el tema "Instalación del controlador JDBC universal de 8DB2", el diagrama de sintaxis de DB2Binder 8define de modo incorrecto la sintaxis de URL para el controlador JDBC universal 8de DB2. La representación correcta de la sintaxis de URL para DB2Binder se 8muestra en el diagrama siguiente:

8
8Sintaxis de DB2Binder
8 8
Leer el esquema de sintaxisOmitir el esquema de sintaxis visual8>>-java--com.ibm.db2.jcc.DB2Binder------------------------------>
8
8>---url jdbc:db2://servidor-+-----------+-/basedatos------------>
8                            '-:--puerto-'
8
8>---user ID-usuario---password contraseña--+--------------+----->
8                                           '--size entero-'
8
8>--+------------------------------+----------------------------->
8   '--collection nombre-colección-'
8
8>--+---------------------------------+--+-------+--------------><
8   |              .-,--------------. |  '--help-'
8   |              V                | |
8   '--tracelevel ---opción-rastreo-+-'
8
8
8 8
8 8 8

Redireccionamiento de clientes del controlador JDBC universal de 8DB2

8

La característica de redireccionamiento automático de clientes en 8DB2 Universal Database (UDB) para 8Linux, UNIX, y Windows permite que las aplicaciones 8cliente se recuperen de una pérdida de comunicación con el servidor para que 8puedan continuar trabajando con una interrupción mínima.

8

Cuando un servidor se bloquea, cada cliente conectado a dicho servidor recibe un error de comunicación, 8que finaliza la conexión y da lugar a un error de la aplicación. En los casos en que la disponibilidad sea importante, debe tener soporte de configuración redundante o de gestión de anomalías. (La 8gestión de anomalías es la capacidad de un servidor para asumir operaciones 8cuando falla otro servidor.) En cualquiera de los casos, el cliente del 8controlador JDBC universal de DB2 8intenta volver a establecer la conexión con un nuevo servidor o con el servidor 8original, que se puede estar ejecutando en un nodo anómalo. Cuando se 8restablece la conexión, la aplicación recibe una excepción de SQL 8que informa sobre la anomalía de la transacción, pero la aplicación puede continuar con la 8siguiente transacción.

8
8Restricciones 8

8
8
8Procedimiento 8

Después de que el administrador de bases de datos especifique la ubicación 8del servidor alternativo en una base de datos determinada en la instancia del 8servidor, las ubicaciones del servidor primario y alternativo se devuelven al 8cliente en el momento de la conexión. El controlador JDBC universal de DB2 8crea una instancia del objeto Referenceable DB2ClientRerouteServerList 8y almacena dicha instancia en su memoria temporal. Si se pierde la 8comunicación, el controlador JDBC universal de 8DB2 8intenta restablecer la conexión utilizando la información del servidor que se 8devuelve desde el servidor.

8

La propiedad de DataSource clientRerouteServerListJNDIName proporciona 8soporte adicional de redireccionamiento de clientes en el cliente; 8clientRerouteServerListJNDIName tiene dos funciones:

8 8

La propiedad clientRerouteServerListJNDIName identifica una referencia JNDI 8para una instancia de DB2ClientRerouteServerList en un depósito JNDI de 8información del servidor alternativo. Tras una conexión satisfactoria con el 8servidor principal, la información sobre el servidor alternativo que suministra 8clientRerouteServerListJNDIName queda sobregrabada por la información 8procedente del servidor. El controlador JDBC universal de 8DB2 intentará propagar la información actualizada al almacén 8JNDI tras una gestión de anomalías si la propiedad clientRerouteServerListJNDIName 8está definida. Si se especifica clientRerouteServerListJNDIName, la información 8del servidor primario que se especifica en DB2ClientRerouteServerList se 8utilizará para la conexión. Si no se especifica el servidor primario, se 8utilizará la información de serverName especificada en la fuente de datos.

8

DB2ClientRerouteServerList es un bean 8Java 8serializable con cuatro propiedades:

8

Se proporcionan los métodos getter y setter para acceder a estas 8propiedades. La definición de la clase de DB2ClientRerouteServerList es la 8siguiente:

8
package com.ibm.db2.jcc;
8public class DB2ClientRerouteServerList 
8  implements java.io.Serializable,
8  javax.naming.Referenceable
8{
8  public String[] alternateServerName;
8  public synchronized void 
8    setAlternateServerName(String[] alternateServer);
8  public String[] getAlternateServerName();
8  public int[] alternatePortNumber;
8  public synchronized void 
8    setAlternatePortNumber(int[] alternatePortNumberList);
8  public int[] getAlternatePortNumber();
8  
8  public synchronized void 
8    setPrimaryServerName (String primaryServerName);
8  public String getPrimaryServerName ();
8  public synchronized void setPrimaryPortNumber (int primaryPortNumber)
8  public int getPrimaryPortNumber (); 
8}
8

Se configura una conexión de gestión de anomalías establecida 8utilizando las propiedades originales de la fuente de datos, salvo en lo que 8respecta al nombre del servidor y el número de puerto. Además, los registros 8especiales de DB2 UDB que se modificaron durante la conexión original los restablece en 8la conexión de gestión de anomalías el controlador JDBC universal de 8DB2.

8

Cuando se produce un error de comunicaciones, el controlador JDBC universal 8de DB2 primero intenta recuperar el servidor 8primario. Si esta recuperación falla, el controlador intenta conectar con la 8ubicación alternativa (gestión de anomalías). Tras restablecer una conexión, el 8controlador emite una java.sql.SQLException a la aplicación con el SQLCODE 8-4498, para indicar a la aplicación que la conexión se ha vuelto a establecer 8de modo automático con el servidor alternativo. La aplicación puede entonces 8reintentar su transacción.

8
8Procedimiento para hacer que DB2ClientRerouteServerList sea permanente 8

Para configurar el almacenamiento para hacer que DB2ClientRerouteServerList 8sea permanente, realice los pasos siguientes:

8
    8
  1. Cree una instancia de DB2ClientRerouteServerList y vincule dicha instancia 8al registro JNDI. Por ejemplo: 8
    // Crear un contexto inicial para operaciones de asignación de nombres
    8InitialContext registry = new InitialContext();
    8// Crear un objeto DB2ClientRerouteServerList
    8DB2ClientRerouteServerList address=new DB2ClientRerouteServerList();
    8
    8// Definir el número de puerto y nombre de servidor para el servidor primario
    8address.setPrimaryPortNumber(50000);
    8address.setPrimaryServerName("mvs1.sj.ibm.com");
    8
    8// Definir el número de puerto y nombre de servidor para el
    8// servidor alternativo
    8int[] port = {50002};
    8String[] server = {"mvs3.sj.ibm.com"};
    8address.setAlternatePortNumber(port);
    8address.setAlternateServerName(server);
    8    
    8registry.rebind("serverList", address);
    
  2. 8
  3. Asigne el nombre JNDI del objeto DB2ClientRerouteServerList a la propiedad 8de DataSource clientRerouteServerListJNDIName. Por ejemplo: 8
    datasource.setClientRerouteServerListJNDIName("serverList");
7 7 7

Personalización de las propiedades de configuración del 7controlador JDBC universal de DB2

7

Las propiedades de configuración del controlador JDBC universal de 7DB2 le permiten establecer correctamente valores que tienen un ámbito de 7nivel de todo el controlador. Estos valores se aplican a aplicaciones e instancias 7de DataSource. Puede modificar los valores sin tener que cambiar el código 7fuente de la aplicación ni las características de DataSource.

7

Cada valor de propiedad de configuración de controlador JDBC universal de 7DB2 tiene el siguiente formato:

7
propiedad=valor
7

Si la propiedad de configuración comienza por db2.jcc.override, significa que se aplica a todas 7las conexiones y prevalece sobre cualquier propiedad 7Connection o DataSource con el mismo nombre de propiedad. Si la propiedad de configuración comienza 7por db2.jcc o db2.jcc.default, el valor de la propiedad de configuración es un valor por omisión. Los valores de las propiedades Connection o DataSource prevalecen sobre este valor.

7
7Procedimiento 7

Para establecer propiedades de configuración:

7

7 7

Puede establecer las siguientes propiedades de configuración del 7controlador JDBC universal de DB2. 7Todas las propiedades son opcionales.

7
7
db2.jcc.override.traceFile
7
Habilita el rastreo del controlador JDBC universal de 7DB2 para código del controlador Java y 7especifica el nombre en el que se basan los nombres de archivos de rastreo. 7

Especifique un nombre de archivo completamente calificado para el valor de la 7propiedad db2.jcc.override.traceFile.

7

La propiedad 7db2.jcc.override.traceFile prevalece sobre la propiedad traceFile para un 7objeto Connection o DataSource.

7

Por ejemplo, la especificación del 7siguiente valor para db2.jcc.override.traceFile habilita el rastreo de código Java del controlador JDBC universal de 7DB2 7en un archivo denominado /SYSTEM/tmp/jdbctrace:

7
db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace

Debe 7establecer las propiedades de rastreo bajo la dirección del Soporte de software 7de IBM.

7
7
db2.jcc.sqljUncustomizedWarningOrException
7
Especifica la acción que emprende el controlador JDBC universal de 7DB2 cuando se ejecuta una aplicación SQLJ 7no personalizada. db2.jcc.sqljUncustomizedWarningOrException 7puede tener los siguientes valores: 7
7
0
7
El controlador JDBC universal de 7DB2 no genera ningún Aviso ni Excepción cuando se ejecuta una aplicación 7SQLJ no personalizada. Este es el valor por omisión. 7
7
1
7
El controlador JDBC universal de 7DB2 genera un Aviso cuando se ejecuta una aplicación SQLJ no personalizada. 7
7
2
7
El controlador JDBC universal de 7DB2 genera una Excepción cuando se ejecuta una aplicación SQLJ no 7personalizada. 7
7
7
7
7 7 7

Función db2secFreeToken eliminada

7

La función db2secFreeToken (Liberar memoria retenida por señal) ya no forma parte de la API del conector 7de autentificación de usuario 7db2secGssapiServerAuthFunctions_1.

8 8 8

Despliegue cuidadoso de los conectores de seguridad personalizados

8

La integridad de la instalación de 8DB2 Universal Database (UDB) puede verse afectada 8si en el despliegue de los conectores de seguridad éstos no se han codificado, 8revisado y probado de modo apropiado. DB2 UDB toma precauciones para muchos de los tipos más 8comunes de anomalías, pero no puede garantizar una integridad completa cuando 8se despliegan conectores de seguridad escritos por el usuario.

7 7 7

Conectores de seguridad

7

Si utiliza su propio conector de seguridad personalizado, puede utilizar un 7ID de usuario de hasta 255 caracteres en una sentencia connect emitida a través 7del CLP o de una sentencia de SQL dinámico.

7 7 7

Las API del conector de seguridad

7

Para las API db2secGetGroupsForUser, db2secValidatePassword y db2secGetAuthIDs, 7el parámetro de entrada, nombrebd, puede ser nulo y su parámetro de entrada de longitud 7correspondiente, lonnombrebd, se establecerá en 0.

7 7 7

Convenios de denominación de los conectores de seguridad 7(Linux y UNIX)

7

Ahora .so se acepta como una extensión de 7nombre de archivo para las bibliotecas de conectores de seguridad escritas por 7el usuario en todas las plataformas Linux y UNIX.

7

En AIX, las bibliotecas de conectores de seguridad pueden tener la extensión 7.a o .so. Si existen 7ambas versiones de una biblioteca de conector, se utiliza la versión 7.a.

7

Para HP-UX en PA-RISC, las bibliotecas de los conectores de seguridad pueden 7tener la extensión .sl o .so. Si existen ambas versiones de una biblioteca de conector, 7se utiliza la versión 7.sl.

7

En las demás plataformas 7Linux y UNIX, .so es la única extensión de 7nombre de archivo soportada para las bibliotecas de conectores de 7seguridad.

7 7 7

Restricciones sobre las bibliotecas de conectores de seguridad

7

En 7AIX, las bibliotecas de conectores de seguridad pueden tener la extensión 7de nombre de archivo .a o .so. El 7mecanismo utilizado para cargar la biblioteca de conectores depende de la extensión 7que se utilice:

7
7
Bibliotecas de conectores con la extensión de nombre de archivo .a
7
Se da por supuesto que las bibliotecas de conectores con las extensiones de nombre de archivo .a son archivos que contienen miembros de objetos compartidos. Estos miembros se 7deben denominar shr.o (32 bits) o shr64.o (64 bits). Un solo archivo puede contener tanto miembros 7de 32 bits como de 64 bits, lo que permite desplegarlos en ambos tipos de plataformas. 7

Por ejemplo, para crear una biblioteca de conectores de tipo archivo de 32 bits:

7
  xlc_r -qmkshrobj -o shr.o MiConector.c -bE:MiConector.exp
7  ar rv MiConector.a shr.o
7
7
Bibliotecas de conectores con la extensión de nombre de archivo .so
7
Se da por supuesto que las bibliotecas de conectores con las extensiones de nombre de archivo .so son objetos compartidos que se pueden cargar de forma dinámica. Este tipo de objeto es de 32 o de 64 bits, en función 7de las opciones de compilador y enlazador utilizadas al crearlo. Por ejemplo, para crear una biblioteca de conectores de 32 bits: 7
  xlc_r -qmkshrobj -o MiConector.so MiConector.c -bE:MiConector.exp
7
7
7

En todas plataformas que no sean 7AIX, siempre se da por supuesto que las 7bibliotecas de conectores de seguridad son objetos compartidos que se pueden 7cargar de forma dinámica.

8 8 8

Los conectores de seguridad de API GSS no dan soporte a autentificación 8de múltiples flujos

8

La autentificación de API GSS está limitada al flujo de un símbolo desde el 8cliente hasta el servidor y de un símbolo desde el servidor hasta el cliente. Estos 8símbolos se obtienen de gss_init_sec_context() en el cliente y de 8gss_accept_sec_context() en el servidor. Los conectores de API GSS 8que intenten flujos adicionales generarán un error inesperado de conector de 8seguridad, que hará que la conexión falle.

8 8 8

Los conectores de seguridad API GSS no dan soporte a cifrado y firma de 8mensajes

8

El cifrado y la firma de mensajes no está disponible en los conectores de 8seguridad de API GSS.

7 7 7

Finalización implícita de transacciones en aplicaciones autónomas

7

Todas las finalizaciones de aplicaciones (normales y anormales) retrotraen de forma implícita 7unidades de trabajo restantes, independientemente del sistema operativo.

8 8 8

Soporte de transacciones distribuidas

8

En la documentación Novedades para 8DB2 Universal Database (UDB) Versión 8.2, la información sobre el Soporte de transacciones 8distribuidas para la sección de mejoras del controlador JDBC universal de 8DB2 8contiene información incorrecta. La última frase de esta sección es 8incorrecta. La información correcta es la siguiente:

8

Como en la Versión 8.2, 8DB2 UDB proporciona soporte para el proceso de transacciones 8distribuidas que se ajusta a la especificación XA. Este soporte implanta las 8especificaciones Java 2 8Platform, Enterprise Edition (J2EE) Java Transaction Service (JTS) y Java Transaction API (JTA).

[ Principio de página |Página anterior | Página siguiente | Contenido ]