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 8La 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 8IBM 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.
8El GUID para el conjunto de propiedades es 8{0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}
8DBPROPSET_DB2DATASOURCE tiene tres propiedades:
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 grandes8
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 8Valores | 8Significado | 8
---|---|
VARIANT_TRUE | 8Hará 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. | 8
VARIANT_FALSE | 8DBCOLUMNFLAGS_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
#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 WChar8 8 8
Valores | 8Significado | 8
---|---|
VARIANT_TRUE | 8OLE 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. | 8
VARIANT_FALSE | 8OLE 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
#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 ordinal8
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 8Valores | 8Significado | 8
---|---|
VARIANT_TRUE | 8Hará que el proveedor devuelva un conjunto de filas 8clasificadas según ORDINAL_POSITION. | 8
VARIANT_FALSE | 8Hará 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
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:
8La 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.
8Cuando 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.
8Despué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.
8La propiedad de DataSource clientRerouteServerListJNDIName proporciona 8soporte adicional de redireccionamiento de clientes en el cliente; 8clientRerouteServerListJNDIName tiene dos funciones:
8La 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.
8DB2ClientRerouteServerList es un bean 8Java 8serializable con cuatro propiedades:
8Se proporcionan los métodos getter y setter para acceder a estas 8propiedades. La definición de la clase de DB2ClientRerouteServerList es la 8siguiente:
8package 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.
8Cuando 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.
Para configurar el almacenamiento para hacer que DB2ClientRerouteServerList 8sea permanente, realice los pasos siguientes:
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);
datasource.setClientRerouteServerListJNDIName("serverList");
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.
7Cada valor de propiedad de configuración de controlador JDBC universal de 7DB2 tiene el siguiente formato:
7propiedad=valor
7Si 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.
7Para establecer propiedades de configuración:
7 7Para aplicaciones 7Java autónomas, puede establecer las 7propiedades de configuración como propiedades del sistema Java especificando -Dproperty=valor para 7cada propiedad de configuración cuando ejecute el mandato java.
Para aplicaciones Java autónomas, puede establecer las propiedades de 7configuración especificando la opción -Ddb2.jcc.propertiesFile=path 7cuando ejecute el mandato java.
DB2JccConfiguration.properties puede ser un archivo autónomo o puede estar 7incluido en un archivo JAR.
7Si DB2JccConfiguration.properties es un 7archivo autónomo, la vía de acceso correspondiente a 7DB2JccConfiguration.properties debe estar en la concatenación de CLASSPATH.
7Si DB2JccConfiguration.properties es un archivo JAR, el archivo JAR debe estar 7en la concatenación de CLASSPATH.
Puede establecer las siguientes propiedades de configuración del 7controlador JDBC universal de DB2. 7Todas las propiedades son opcionales.
7Especifique un nombre de archivo completamente calificado para el valor de la 7propiedad db2.jcc.override.traceFile.
7La propiedad 7db2.jcc.override.traceFile prevalece sobre la propiedad traceFile para un 7objeto Connection o DataSource.
7Por 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:
7db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace
Debe 7establecer las propiedades de rastreo bajo la dirección del Soporte de software 7de IBM.
7La 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 8La 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 7Si 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 7Para 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 7Ahora .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.
7En 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.
7Para 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.
7En 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 7En 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:
7Por 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
7xlc_r -qmkshrobj -o MiConector.so MiConector.c -bE:MiConector.exp7
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 8La 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 8El cifrado y la firma de mensajes no está disponible en los conectores de 8seguridad de API GSS.
7 7 7Todas las finalizaciones de aplicaciones (normales y anormales) retrotraen de forma implícita 7unidades de trabajo restantes, independientemente del sistema operativo.
8 8 8En 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:
8Como 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 ]