Codificación de base de datos DB2

En esta sección se proporciona información importante sobre problemas de la codificación de base de datos DB2 y DB2 para z/OS, relacionados con la información de tamaño, y la acción que es necesario tener en cuenta realizar.

¿Cuál es el problema?

Cuando se utiliza codificación y/o un juego de caracteres de varios bytes (MBCS) DB2 procesa las columnas respecto a su tamaño de bytes y no a su longitud de caracteres. Esto significa que una columna CHAR, VARCHAR o CLOB, cuando se utilizan caracteres de varios bytes, puede almacenar menos caracteres, en función de la longitud real de los caracteres, de lo que indica la especificación de longitud de columna.

Considere la siguiente ilustración:

En el caso de los datos de un solo byte, la serie cabrá y el proceso será satisfactorio; sin embargo, en el caso de los datos de varios bytes, la serie no cabrá, lo que producirá errores de desbordamiento en tiempo de ejecución. Es decir, normalmente un cliente web de IBM Cúram Social Program Management capturará y notificará errores de tamaño de campo de forma que resulte fácil al usuario. Sin embargo, en un caso como el anterior, dado que comprueba el número de caracteres y no la longitud de bytes, el cliente no capturará esta discrepancia de tamaño, lo que hará que el usuario reciba un error de "excepción no manejada del servidor", que es un error -302 de código SQL subyacente.

Cómo Cúram corrige el problema

Cúram proporciona prestaciones de modelado y en tiempo de compilación para redimensionar sus columnas de base de datos para corregir el problema anterior. Estas prestaciones se describen más detalladamente en las publicaciones Cúram Modeling Reference Guide y Cúram Server Developer's Guide.

Dado que Cúram proporciona de fábrica soporte para varios idiomas, su soporte para datos MBCS está habilitado de forma predeterminada con el conjunto de expansión máximo. Estos valores de expansión son adecuados para garantizar que los nuevos usuarios, los entornos de prueba, etc. no encuentran errores debidos a su idioma, codificación y tamaño de base de datos. Además, los usuarios pueden encontrarse que necesitan datos MBCS al importar o copiar/pegar datos de otras aplicaciones en su sistema Cúram. Sin embargo, es posible que estos valores predeterminados no sean adecuados para todos los entornos. En la siguiente sección se describen algunas consideraciones sobre cómo modificar estos valores de expansión.

Qué es necesario tener en cuenta

Es muy importante considerar atentamente los requisitos de codificación de datos respecto a DB2 y Cúram a fin de evitar un comportamiento inesperado de cómo la base de datos almacena los caracteres.

La ilustración anterior representa un caso límite en el que la longitud de los datos coincide con el ancho máximo de columna. En muchos casos es improbable que incluso con caracteres MBCS se produzca una situación de desbordamiento ya que la mayoría de los datos no alcanzan el tamaño máximo definido; sin embargo, debe estar preparado para la posibilidad de estas situaciones de error.

Debería utilizar la codificación de juego de caracteres de base de datos adecuada para su aplicación y entorno. Si es posible, debe considerar utilizar un SBCS y codificación que dé soporte a sus requisitos. Por ejemplo, CP1252 da soporte a la mayoría de caracteres de Europa Occidental. Sin embargo, es posible que CP1252 (u otras codificaciones SBCS) no den soporte a caracteres procedentes de codificaciones/juegos de caracteres distintos o "más amplios" (por ejemplo, UTF-8) que los usuarios pueden utilizar para copiar y pegar en su navegador para Cúram.

En este punto de la instalación de su base de datos DB2 (o DB2 para z/OS), sólo necesita identificar su requisito de datos SBCS o MBCS y estar preparado para realizar la acción adecuada antes de crear la base de datos de Cúram: