Intercalaciones en las consultas distribuidas

SQL Server admite varias intercalaciones. Las intercalaciones pueden ser diferentes para cada columna y cada valor de carácter tiene una propiedad de intercalación asociada. SQL Server interpreta la propiedad de intercalación de los datos de caracteres de un origen de datos remoto y la trata del modo correspondiente.

SQL Server utiliza la intercalación de datos remotos para realizar operaciones de comparación y orden en datos de caracteres (Unicode y no Unicode). La información de intercalación de los datos de caracteres remotos se determina de manera diferente dependiendo de si el origen de datos corresponde o no a una instancia de SQL Server:

  • El Microsoft SQL Server proveedor OLE DB de Native Client informa automáticamente de la intercalación de cada una de las columnas que devuelve.

  • En el caso de tablas remotas que no se encuentran en SQL Server pero se sabe que su intercalación es compatible con SQL Server, el administrador puede especificar la intercalación predeterminada del origen de datos OLE DB como parte de la definición del servidor vinculado. A continuación, SQL Server puede utilizar la intercalación predeterminada para todas las columnas devueltas por el servidor vinculado.

Después de determinar la intercalación de una columna de caracteres remota, SQL Server aplica las mismas reglas de conversión, comparación y operación a las columnas de tablas remotas que a las columnas locales. Para obtener más información acerca de las reglas que SQL Server aplica a las intercalaciones y los nombres de intercalación que SQL Server admite, vea Trabajar con intercalaciones.

Si la intercalación de la base de datos remota predeterminada es distinta a la intercalación de la base de datos local actual, las cadenas remotas se tratan como Unicode. Para asegurarse de que las cadenas se tratan de forma homogénea en todos los servidores remotos, realice los pasos siguientes:

  • Utilice el formato Unicode, N**'string'**, para especificar cadenas literales en consultas distribuidas.

  • Defina servidores vinculados que tengan una base de datos de destino explícita, en lugar de confiar en una base de datos remota predeterminada. Esta base de datos puede tener una intercalación diferente.

Definir opciones de servidor vinculado

Las siguientes opciones de servidor vinculado que se definen mediante sp_serveroption controlan cuándo y cómo SQL Server utiliza intercalaciones desde servidores vinculados:

  • La opción use remote collation especifica si se va a utilizar la intercalación de una columna remota o de un servidor local. Si es true, la intercalación de columnas remotas se utiliza para orígenes de datos de SQL Server y la intercalación especificada en collation name se usa para orígenes de datos que no sean de SQL Server. Si es false, las consultas distribuidas utilizan siempre la intercalación predeterminada de la instancia del servidor local, y se omiten collation name y la intercalación de columnas remotas.

  • La opción collation name especifica el nombre de la intercalación utilizada por el origen de datos remoto si use remote collation es true y el origen de datos no es de SQL Server. El nombre debe pertenecer a una de las intercalaciones que SQL Server admite. Use esta opción cuando intente obtener acceso a un origen de datos OLE DB que no sea de SQL Server, pero cuya intercalación coincida con una de las intercalaciones de SQL Server. Los orígenes de datos de SQL Server comunican sus intercalaciones de columna y la opción collation name se omite para los servidores vinculados que hacen referencia a orígenes de datos de SQL Server.

    Nota

    Usar las opciones de servidor vinculado es la única manera de habilitar el uso de intercalaciones remotas. Por tanto, las consultas creadas que utilizan nombres "ad hoc" proporcionados por OPENROWSET y OPENDATASOURCE no pueden usar la información de intercalación de los datos de caracteres remotos. Por otra parte, todos los servidores vinculados de la versión 7.0 de SQL Server que se actualicen a SQL Server 2000 o a una versión posterior se establecen en use remote collation=false.

Resumen de configuración de opciones

La tabla siguiente resume cómo SQL Server determina la intercalación utilizada para cada columna cuando use remote collation se establece en true (o en on).

Tipo de servidor vinculado

Nombre de intercalación no establecido

Nombre de intercalación ?establecido (en CollX)

SQL Server

Intercalación real de la columna remota.

Intercalación real de la columna remota.

Otros

Intercalación predeterminada de la instancia local de SQL Server.

CollX

La tabla siguiente resume cómo SQL Server determina la intercalación utilizada para cada columna cuando use remote collation se establece en false (o en off).

Tipo de servidor vinculado

Nombre de intercalación no establecido

Nombre de intercalación ?establecido (en CollX)

SQL Server

Intercalación predeterminada de la instancia local de SQL Server.

Intercalación predeterminada de la instancia local de SQL Server.

Otros

Intercalación predeterminada de la instancia local de SQL Server.

Intercalación predeterminada de la instancia local de SQL Server.