Administrar conversión de datos entre páginas de código de cliente/servidor

En este tema se describe cómo mantener la integridad de los datos de caracteres cuando la base de datos no almacena dichos datos mediante tipos de datos Unicode y cuando las aplicaciones del cliente que interactúan con los datos tampoco reconocen Unicode. En esta situación, la página de códigos del almacenamiento de datos y la de la aplicación del cliente deben ser iguales. Si estas páginas de códigos son distintas, puede que la conversión que se produzca entre el cliente y el servidor provoque la pérdida de algunos caracteres.

No se admite la deshabilitación de la característica AutoTranslate del controlador ODBC de SQL Server para insertar datos definidos con otra página de códigos desde el servidor. Además, aunque AutoTranslate esté deshabilitada, no impedirá la traducción de páginas de códigos para eventos de lenguaje SQL. El resultado es que cuando las páginas de códigos del cliente y la base de datos no coinciden, se suele aplicar la traducción de páginas de códigos a cualquier cadena de caracteres no Unicode que se envíe hacia o desde el servidor.

Si puede, debe evitar esta situación. La posibilidad más adecuada para un servidor de una determinada página de códigos es comunicarse sólo con clientes que utilicen la misma página de códigos. La segunda posibilidad es utilizar otra página de códigos que tenga prácticamente el mismo juego de caracteres. Por ejemplo, las páginas de códigos 1252 (Latin1) y 850 (Multilingual Latin1) pueden almacenar prácticamente el mismo juego de caracteres, por lo que la mayoría de los caracteres de estas dos páginas de códigos se pueden convertir de una página de códigos a otra sin pérdida de datos.

Si debe comunicarse con clientes que utilicen distintas páginas de códigos, la solución admitida es almacenar los datos en columnas Unicode. Si alguna de estas opciones es inviable, la otra alternativa es almacenar los datos en columnas binarias con los tipos de datos binary, varbinary o varbinary(max). Sin embargo, los datos binarios sólo pueden ordenarse y compararse por orden binario. Esto los hace menos flexibles que los datos de caracteres.