You are on page 1of 18

Mi coleccin

Este documento se proporciona "tal cual". La informacin y los puntos de vista expresados en este documento, incluyendo las referencias a sitios web de
Internet y direcciones URL, est sujeta a cambios sin aviso. Este documento no implica ningn derecho legal respecto a ninguna propiedad intelectual de ningn
nombre de producto o producto de Microsoft. Puede copiar y utilizar este documento con fines internos y de referencia. Se permite que modifique este
documento para sus fines internos y de referencia. 2013 Microsoft. Reservados todos los derechos. Trminos de uso
(http://msdn.microsoft.com/cc300389.aspx) | Marcas comerciales (http://www.microsoft.com/library/toolbar/3.0/trademarks/en-us.mspx)

Table Of Contents
Captulo 1
Compatibilidad con la intercalacin y Unicode

Captulo1

Compatibilidad con la intercalacin y Unicode


SQL Server 2014
Las intercalaciones de SQL Server proporcionan propiedades de distincin entre maysculas y minsculas, acentos y reglas de ordenacin para los datos. Las intercalaciones que se usan
con tipos de datos de caracteres como char y varchar dictan la pgina de cdigos y los caracteres correspondientes que se pueden representar para ese tipo de datos. Si va a instalar
una instancia nueva de SQL Server, restaurar una copia de seguridad de la base de datos o conectar el servidor a las bases de datos cliente, es importante conocer los requisitos de
configuracin regional, el criterio de ordenacin y la distincin entre maysculas y minsculas y acentos de los datos con los que se va a trabajar. Para enumerar las intercalaciones
disponibles en la instancia de SQL Server, vea sys.fn_helpcollations (Transact-SQL).
Al seleccionar una intercalacin para un servidor, base de datos, columna o expresin, se estn asignando ciertas caractersticas a los datos que afectarn a los resultados de muchas
operaciones de la base de datos. Por ejemplo, cuando se crea una consulta con ORDER BY, el criterio de ordenacin del conjunto de resultados puede depender de la intercalacin que
se aplica a la base de datos o que se dicta en una clusula COLLATE en el nivel de expresin de la consulta.
Para hacer el mejor uso posible de la compatibilidad con la intercalacin en SQL Server, se deben conocer los trminos que se definen en este tema y cmo se relacionan con las
caractersticas de los datos.

En este tema
Trminos de intercalacin
Compatibilidad con Unicode
Caracteres complementarios
Compatibilidad con GB18030
Compatibilidad con escritura compleja
Tareas relacionadas
Contenido relacionado

Trminos de intercalacin
Intercalacin
Configuracin regional
Pgina de cdigos
Criterio de ordenacin

Intercalacin
Una intercalacin especifica los patrones de bits que representan a cada carcter de un conjunto de datos. Las intercalaciones tambin determinan las reglas que ordenan y comparan
los datos. SQL Server permite almacenar los objetos que tienen intercalaciones diferentes en una sola base de datos. En las columnas que no sean Unicode, la configuracin de
intercalacin especifica la pgina de cdigos de los datos y qu caracteres se pueden representar. Los datos que se mueven entre columnas que no sean Unicode se deben convertir
de la pgina de cdigos de origen a la pgina de cdigos de destino.
Los resultados de las instrucciones de TransactSQL pueden variar cuando se ejecutan en el contexto de bases de datos distintas que tengan una configuracin de intercalacin
diferente. Si es posible, utilice una intercalacin normalizada para su organizacin. De esta manera no tiene que especificar explcitamente la intercalacin en cada carcter o expresin
Unicode. Si debe trabajar con objetos que tienen configuraciones de intercalacin y de pgina de cdigos diferentes, conviene codificar las consultas para tener en cuenta las reglas de
prioridad de intercalacin. Para obtener ms informacin, vea Prioridad de intercalacin TransactSQL.
Las opciones asociadas con una intercalacin son la distincin de maysculas y minsculas, la distincin de acentos, la distincin de tipos de kana, la distincin de ancho. Estas opciones
se especifican anexndolas al nombre de intercalacin. Por ejemplo, la intercalacin Japanese_Bushu_Kakusu_100_CS_AS_KS_WS es una intercalacin con distincin de maysculas y
minsculas, distincin de acentos, distincin de tipos de kana y distincin de ancho. En la tabla siguiente se describe el comportamiento asociado a estas opciones.
Opcin

Descripcin

Distinguir
maysculas
de
minsculas
(_CS)

Distingue entre letras maysculas y minsculas. Si se selecciona, las letras minsculas se ordenan por delante de sus versiones en maysculas. Si esta opcin no est
seleccionada, la intercalacin no distinguir maysculas de minsculas. Es decir, que SQL Server considera las versiones mayscula y minscula de las letras como
letras idnticas para fines de ordenacin. Puede seleccionar explcitamente no distinguir entre maysculas y minsculas especificando _CI.

Distinguir
acentos
(_AS)

Distingue entre caracteres acentuados y no acentuados. Por ejemplo, 'a' no es igual a ''. Si esta opcin no est seleccionada, la intercalacin no distinguir los
acentos. Es decir, que SQL Server considera las versiones acentuadas y no acentuadas de las letras como letras idnticas para fines de ordenacin. Puede seleccionar
explcitamente no distinguir acentos especificando _AI.

Distinguir
kana (_KS)

Distingue entre los dos tipos de caracteres kana japoneses: Hiragana y de Katakana. Si la opcin no est seleccionada, la intercalacin no distingue los tipos de kana.
Es decir, que SQL Server considera los caracteres Hiragana y Katakana como caracteres iguales para la ordenacin. La omisin de esta opcin es el nico mtodo
para especificar Kana-insensibilidad.

Distinguir
ancho (_WS)

Distingue entre un carcter de un solo byte y el mismo carcter representado como un carcter de doble byte. Si esta opcin no se activa, SQL Server considera que
la representacin de un solo byte y de doble byte del mismo carcter son idnticas para la ordenacin. La omisin de esta opcin es el nico mtodo para
especificar no distincin de ancho.

SQL Server admite los siguientes conjuntos de intercalacin:

intercalaciones de Windows
Las intercalaciones de Windows definen reglas para almacenar los datos de caracteres que se basan en una configuracin regional del sistema Windows asociada. En una
intercalacin de Windows, la comparacin de datos no Unicode se implementa con el mismo algoritmo que la de los datos Unicode. Las reglas de intercalacin bsicas de
Windows especifican qu alfabeto o idioma se utilizan cuando se aplica un orden de diccionario, y la pgina de cdigos que se usa para almacenar los datos de caracteres que
no son Unicode. Tanto la ordenacin Unicode y como la ordenacin no Unicode son compatibles con comparaciones de cadenas de una determinada versin de Windows. De

este modo se proporciona coherencia entre los tipos de datos de SQL Server y tambin se ofrece a los programadores la posibilidad de ordenar las cadenas de sus
aplicaciones usando las mismas reglas que usa SQL Server. Para obtener ms informacin, vea Nombre de intercalacin de Windows TransactSQL.
Intercalaciones binarias
Las intercalaciones binarias ordenan los datos segn la secuencia de valores codificados definidos por la configuracin regional y el tipo de datos. Distinguen entre maysculas y
minsculas. Una intercalacin binaria de SQL Server define la configuracin regional y la pgina de cdigos ANSI que se van a usar. Esto exige un criterio de ordenacin binario.
Dado que son relativamente simples, las intercalaciones binarias ayudan a mejorar el rendimiento de la aplicacin. En los tipos de datos no Unicode, las comparaciones de datos
se basan en los puntos de cdigo que se definen en la pgina de cdigos ANSI. En tipos de datos Unicode, las comparaciones de datos dependen de los puntos de cdigo
Unicode. En intercalaciones binarias de tipos de datos Unicode, la configuracin regional no se tiene en cuenta a la hora de ordenar los datos. Por ejemplo, Latin_1_General_BIN
y Japanese_BIN producen resultados de orden idnticos cuando se usan en datos Unicode.
Las intercalaciones binarias de las versiones anteriores de SQL Server comparaban el primer carcter como WCHAR, seguido de una comparacin byte a byte. Por razones de
compatibilidad con versiones anteriores, la semntica de intercalacin binaria no se cambiar.
Las intercalaciones binarias de esta versin de SQL Server incluyen un conjunto de intercalaciones de comparacin de puntos de cdigo puras. Puede migrar a las intercalaciones
binarias para aprovecharse de las verdaderas comparaciones de puntos de cdigo. Debe utilizar las intercalaciones binarias para desarrollar aplicaciones nuevas. El sufijo BIN2
identifica los nombres de intercalacin que implementan la nueva semntica de intercalacin de punto de cdigo. Tambin hay una marca de comparacin que corresponde a
BIN2 para el orden binario. Sus ventajas son un desarrollo de aplicaciones ms simple y una semntica ms clara.
Intercalaciones SQL Server
Las intercalaciones de SQL Server SQL_* son compatibles en cuanto al criterio de ordenacin con las versiones anteriores de SQL Server. Las reglas de ordenacin alfabtica de
datos no Unicode son incompatibles con cualquier rutina de ordenacin suministrada por los sistemas operativos Windows. Sin embargo, la ordenacin de datos Unicode es
compatible con una versin especial de las reglas de ordenacin de Windows. Como las intercalaciones de SQL Server utilizan reglas de comparacin diferentes para los datos
Unicode y para los que no son Unicode, ver resultados diferentes en las comparaciones de los mismos datos, dependiendo del tipo de datos subyacente. Para obtener ms
informacin, vea Nombre de intercalacin de SQL Server TransactSQL.
Nota
Al actualizar una instancia en idioma ingls de SQL Server, se puede especificar la compatibilidad de las intercalaciones de SQL Server SQL_* con las instancias existentes de
SQL Server. Como la intercalacin predeterminada de una instancia de SQL Server se define durante la instalacin, asegrese de especificar con cuidado la configuracin de la
intercalacin cuando se cumple lo siguiente:
El cdigo de la aplicacin depende del comportamiento de las intercalaciones de SQL Server anteriores.
Se deben almacenar datos de caracteres que reflejen varios idiomas.

Se admite el establecimiento de intercalaciones en los siguientes niveles de una instancia de SQL Server:

Intercalaciones de nivel de servidor


La intercalacin predeterminada de servidor se establece durante la instalacin de SQL Server y tambin se convierte en la intercalacin predeterminada de las bases de datos
del sistema y de todas las bases de datos del usuario. Observe que las intercalaciones exclusivas de Unicode no pueden seleccionarse durante la instalacin de SQL Server
porque no se admiten como intercalaciones de nivel de servidor.
Despus de que una intercalacin se haya asignado al servidor, no puede cambiar la intercalacin excepto exportando todos los objetos y datos de base de datos,
recompilando la base de datos master e importando todos los objetos y datos de base de datos. En lugar de cambiar la intercalacin predeterminada de una instancia de SQL
Server, puede especificar la intercalacin deseada en el momento de crear una base de datos o una columna de base de datos.
Intercalaciones de nivel de base de datos
Cuando se crea una base de datos, se puede usar la clusula COLLATE de la instruccin CREATE DATABASE para especificar la intercalacin predeterminada de la base de datos.
Si no se especifica ninguna intercalacin, se asigna a la base de datos la intercalacin de servidor.
No puede cambiar la intercalacin de base de datos del sistema excepto cambiando la intercalacin del servidor.
La intercalacin de base de datos se usa para todos los metadatos de la base de datos, y es la predeterminada para todas las columnas de cadena, los objetos temporales, los
nombres de variable, y cualquier otra cadena usada en la base de datos. Al cambiar la intercalacin de una base de datos de usuario, tenga en cuenta que existe la posibilidad
de conflictos de intercalacin cuando las consultas en la base de datos tienen acceso a las tablas temporales. Las tablas temporales se almacenan siempre en la base de datos
del sistema de tempdb, que usar la intercalacin de la instancia. Las consultas que comparan datos de caracteres entre la base de datos de usuario y tempdb pueden generar
un error si las intercalaciones producen un conflicto en la evaluacin de los datos de caracteres. Puede resolver esto especificando la clusula COLLATE en la consulta. Para
obtener ms informacin, vea COLLATE (Transact-SQL).
Intercalaciones de columna
Cuando cree o altere una tabla, puede especificar intercalaciones para cada columna de cadena de caracteres mediante la clusula COLLATE. Si no se especifica una
intercalacin, a la columna se le asigna la intercalacin predeterminada de la base de datos.
Intercalaciones de nivel de expresin
Las intercalaciones de nivel de expresin se establecen cuando se ejecuta una instruccin y afectan al modo en que se devuelve un conjunto de resultados. Esto permite que los
resultados de la ordenacin ORDER BY sean especficos de la configuracin regional. Utilice una clusula COLLATE como la siguiente para implementar intercalaciones de nivel de
expresin:

SELECT name FROM customer ORDER BY name COLLATE Latin1_General_CS_AI;

Volver al principio

Configuracin regional
Una configuracin regional es un conjunto de informacin que est asociado a una ubicacin o cultura. Puede incluir el nombre e identificador del idioma hablado, la escritura que se
usa para escribir el idioma y las convenciones culturales. Las intercalaciones pueden estar asociadas a una o varias configuraciones regionales. Para obtener ms informacin, vea Id. de
configuracin regional asignados por Microsoft.
Volver al principio

Pgina de cdigos
Una pgina de cdigos es un juego ordenado de caracteres en un script determinado en el que un ndice numrico, o un valor de punto de cdigo, est asociado con cada carcter.
Una pgina de cdigos de Windows se denomina normalmente juego de caracteres o charset. Las pginas de cdigos se usan para ofrecer compatibilidad con los juegos de caracteres
y las distribuciones de teclado que se usan en distintas configuraciones regionales del sistema Windows.
Volver al principio

Criterio de ordenacin

El criterio de ordenacin especifica cmo se ordenan los valores de datos. Esto afecta a los resultados de la comparacin de los datos. Los datos se ordenan con las intercalaciones, y
se pueden optimizar mediante los ndices.
Volver al principio

Compatibilidad con Unicode


Unicode es un estndar que permite asignar puntos de cdigo con caracteres. Puesto que se ha diseado para cubrir todos los caracteres de todos los idiomas del mundo, no es
preciso usar pginas de cdigos diferentes para controlar los distintos juegos de caracteres. Si almacena datos de caracteres que reflejan varios idiomas, use siempre tipos de datos
Unicode (nchar, nvarchar y ntext) en lugar de tipos de datos que no sean Unicode (char, varchar y text).
Hay limitaciones significativas asociadas a los tipos de datos no Unicode. Esto se debe a que un equipo no Unicode se limitar a utilizar una nica pgina de cdigos. Podra
experimentar una ganancia en el rendimiento mediante Unicode porque se requieren menos conversiones de pginas de cdigos. Las intercalaciones Unicode deben seleccionarse
individualmente en el nivel de expresin, base de datos o columna porque no se admiten en el nivel de servidor.
Las pginas de cdigos que un cliente usa se determinan en la configuracin del sistema operativo. Para establecer las pginas de cdigos del cliente en los sistemas operativos
Windows, use Configuracin regional en el Panel de control.
Al mover los datos de un servidor a un cliente, los controladores de cliente anteriores podran no reconocer la intercalacin del servidor. Esto puede ocurrir al mover los datos de un
servidor Unicode a un cliente no Unicode. La mejor opcin podra ser actualizar el sistema operativo cliente para que las intercalaciones del sistema subyacentes se actualicen. Si el
cliente tiene instalado software cliente de base de datos, se puede considerar la posibilidad de aplicar a dicho software una actualizacin de servicio.
Tambin puede intentar utilizar una intercalacin diferente para los datos del servidor. Elija una intercalacin que se asignar a una pgina de cdigos en el cliente.
Para usar las intercalaciones UTF 16 disponibles en SQL Server 2014, puede seleccionar una de las intercalaciones de _SC de caracteres complementarios (solo las intercalaciones de
Windows para mejorar la bsqueda y la ordenacin de algunos caracteres Unicode.
Para evaluar completamente los problemas relacionados con el uso de tipos de datos Unicode y no Unicode, pruebe su escenario para cuantificar las diferencias de rendimiento en su
entorno. Se recomienda normalizar la intercalacin que se usa en los sistemas de una organizacin e implementar servidores y clientes Unicode siempre que sea posible.
En muchos casos, SQL Server interactuar con otros servidores y clientes, y la organizacin podra usar varios estndares de acceso a datos entre las aplicaciones y las instancias de
servidor. Los clientes SQL Server son uno de los dos tipos principales:

Clientes Unicode que utilizan OLE DB y Conectividad abierta de bases de datos ODBC versin 3.7 o posteriores.
Clientes no Unicode que utilizan DBLibrary y ODBC versin 3.6 o anteriores.

En la tabla siguiente se proporciona informacin acerca de cmo usar datos multilinges con varias combinaciones de servidores Unicode y no Unicode.
Servidor

Cliente

Beneficios o limitaciones

Unicode

Unicode

Dado que los datos Unicode se usarn en todo el sistema, este escenario proporciona el mximo rendimiento y proteccin frente a daos de los datos
recuperados. Se trata de la situacin de Objetos de datos ActiveX ADO, OLE DB y ODBC versin 3.7 o posteriores.

Unicode

No
Unicode

En este escenario y especialmente con las conexiones entre un servidor que ejecuta un sistema operativo ms reciente y un cliente que ejecuta una versin
anterior de SQL Server o un sistema operativo anterior, puede haber limitaciones o producirse errores al mover los datos a un equipo cliente. Los datos
Unicode del servidor intentarn asignarse a una pgina de cdigos correspondiente en el cliente no Unicode para convertir los datos.

No
Unicode

Unicode

No es una configuracin ideal para utilizar datos multilinges. No puede escribir los datos Unicode en el servidor no Unicode. Es probable que se produzcan
problemas si los datos se envan a servidores externos a la pgina de cdigos del servidor.

No
Unicode

No
Unicode

Se trata de un escenario muy limitado para datos multilinges. Puede usar solo una nica pgina de cdigos.

Volver al principio

Caracteres complementarios
SQL Server proporciona los tipos de datos nchar y nvarchar para almacenar los datos Unicode. Estos tipos de datos codifican el texto en un formato denominado UTF 16. Unicode
Consortium asigna a cada carcter un punto de cdigo nico, que es un valor en el intervalo comprendido entre 0x0000 y 0x10FFFF. Los caracteres que se usan con ms frecuencia
tienen valores de punto de cdigo que se ajustarn a una palabra de 16 bits en memoria y en disco, pero los caracteres con valores de punto de cdigo mayores que 0xFFFF requieren
dos palabras de 16 bits consecutivas. Estos caracteres se denominan caracteres adicionales y las dos palabras de 16 bits consecutivas, pares suplentes.
Si utiliza caracteres adicionales:

Los caracteres adicionales se pueden utilizar en las operaciones de ordenacin y comparacin en las versiones de intercalacin 90 o mayores.
Todas las intercalaciones de nivel _100 admiten la ordenacin lingstica con caracteres adicionales.
Los caracteres adicionales no son compatibles con metadatos, como nombres de objetos de base de datos.
A partir de SQL Server 2012, se puede usar una nueva familia de intercalaciones de caracteres adicionales (SC) con los tipos de datos nchar, nvarchar y sql_variant. Por ejemplo:
Latin1_General_100_CI_AS_SC o Japanese_Bushu_Kakusu_100_CI_AS_SC si usa una intercalacin japonesa.
La marca SC se puede aplicar a:
Intercalaciones de Windows de la versin 90
Intercalaciones de Windows de la versin 100
La marca SC no se puede aplicar a:
Intercalaciones de Windows sin versin de la versin 80
Intercalaciones binarias BIN o BIN2
Intercalaciones SQL*

En la siguiente tabla se compara el comportamiento de algunas funciones de cadena y de algunos operadores de cadena cuando usan caracteres adicionales con intercalacin de SC y
sin ella.
Funcin u
operador de
cadena

Con una intercalacin de SC

Sin ninguna intercalacin de SC

CHARINDEX

El par suplente de UTF16 se cuenta como un solo punto de cdigo.

El par suplente de UTF-16 se cuenta como dos


puntos de cdigo.

Estas funciones tratan los pares suplentes como un solo punto de cdigo y funcionan de la forma esperada.

Estas funciones pueden dividir cualquier par


suplente y provocar resultados inesperados.

NCHAR

Devuelve el carcter correspondiente al valor del punto de cdigo Unicode especificado en el intervalo
comprendido entre 0 y 0x10FFFF. Si el valor especificado est en el intervalo comprendido entre 0 y 0xFFFF,
solo se devuelve un carcter. Con valores ms altos, se devuelve el suplente correspondiente.

Un valor mayor que 0xFFFF devuelve NULL en vez


del suplente correspondiente.

UNICODE

Devuelve un punto de cdigo UTF16 en el intervalo comprendido entre 0 y 0x10FFFF.

Devuelve un punto de cdigo UCS2 en el


intervalo comprendido entre 0 y 0xFFFF.

Hacer coincidir
un carcter
comodn

Se admiten caracteres adicionales para todas las operaciones de caracteres comodn.

No se admiten caracteres adicionales para estas


operaciones de caracteres comodn. Se admiten
otros operadores de caracteres comodn.

LEN
PATINDEX
LEFT
REPLACE
REVERSE
RIGHT
SUBSTRING
STUFF

Carcter
comodn
caracteres no
coincidentes
Volver al principio

Compatibilidad con GB18030


GB18030 es un estndar independiente que se usa en la Repblica Popular China para codificar caracteres chinos. En GB18030, los caracteres pueden tener una longitud de 1, 2 o 4
bytes. SQL Server admite caracteres de codificacin GB18030, reconocindolos en el momento de su entrada en un servidor procedentes de una aplicacin del lado cliente y
convirtindolos y almacenndolos de forma nativa como caracteres Unicode. Una vez almacenados en el servidor, se tratan como caracteres Unicode en las operaciones siguientes.
Puede usar cualquier intercalacin china, preferentemente la ms reciente: la versin 100. Todas las intercalaciones de nivel _100 admiten la ordenacin lingstica con caracteres
GB18030. Si los datos incluyen caracteres suplementarios pares suplentes, puede usar las intercalaciones SC disponibles en SQL Server 2014 para mejorar la bsqueda y la
clasificacin.
Volver al principio

Compatibilidad con escritura compleja


SQL Server puede admitir la entrada, el almacenamiento, el cambio, y la visualizacin de escrituras complejas. Ejemplos de escritura compleja son los siguientes:

Escritura que incluye la combinacin de texto de derecha a izquierda y de izquierda a derecha, caso de una combinacin de textos en rabe e ingls.
Escritua cuyos caracteres cambian de forma dependiendo de su posicin, o al combinarse con otros caracteres como, por ejemplo, los caracteres del rabe, el ndico y el
tailands.
Idiomas como el tailands que necesitan diccionarios internos para reconocer palabras porque no existen cortes entre ellas.

Las aplicaciones de base de datos que interactan con SQL Server deben utilizar controles que sean compatibles con escritura compleja. Los controles de formato estndar de
Windows creados en cdigo administrado estn habilitados para escritura compleja.
Volver al principio

Tareas relacionadas
Tarea

Tema

Describe cmo establecer o cambiar la intercalacin de la instancia de SQL Server.

Configurar o cambiar la intercalacin del


servidor

Describe cmo establecer o cambiar la intercalacin de una base de datos de usuario.

Establecer o cambiar la intercalacin de


base de datos

Describe cmo establecer o cambiar la intercalacin de una columna de la base de datos.

Establecer o cambiar la intercalacin de


columnas

Describe cmo devolver informacin de intercalacin en el servidor, la base de datos, o el nivel de columna.

Ver informacin de intercalacin

Describe cmo escribir instrucciones TransactSQL que las hagan ms porttiles de un idioma a otro, o que admitan varios idiomas ms
fcilmente.

Escribir instrucciones Transact-SQL


internacionales

Describe cmo cambiar el idioma de la sesin permite cambiar el idioma de los mensajes de error y las preferencias acerca de cmo
usar y mostrar los datos de fecha, hora y divisa.

Establecer un idioma de la sesin

Volver al principio

Contenido relacionado
Prcticas recomendadas para cambiar las intercalaciones en SQL Server
Migracin de las prcticas recomendadas de SQL Server a Unicode
Sitio Web de Unicode Consortium

Vea tambin
Referencia
sys.fn_helpcollations (Transact-SQL)

Conceptos
Intercalaciones de bases de datos independientes
Elegir un idioma al crear un ndice de texto completo

2014 Microsoft

Configurar o cambiar la intercalacin del servidor


SQL Server 2014
La intercalacin de servidor acta como intercalacin predeterminada para todas las bases de datos del sistema que se han instalado con la instancia de SQL Server, as como las bases
de datos de usuario recin creadas. La intercalacin de servidor se especifica durante la instalacin de SQL Server. Para obtener ms informacin, vea Compatibilidad con la intercalacin
y Unicode.

Cambiar la intercalacin de servidor


El cambio de la intercalacin predeterminada para una instancia de SQL Server puede ser una operacin compleja que incluye los siguientes pasos:

Asegurarse de que se dispone de toda la informacin o scripts necesarios para volver a crear las bases de datos de usuario y todos los objetos contenidos en ellas.
Exportar todos los datos mediante una herramienta como bcp (utilidad). Para obtener ms informacin, vea Importar y exportar datos de forma masiva (SQL Server).
Quitar todas las bases de datos de usuario.
Recompilar la base de datos master especificando la nueva intercalacin en la propiedad SQLCOLLATION del comando setup. Por ejemplo:

Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName


/SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ]
/SQLCOLLATION=CollationName

Para obtener ms informacin, vea Volver a generar bases de datos del sistema.
Crear todas las bases de datos y todos los objetos contenidos en ellas.
Importar todos los datos.

Nota
En lugar de cambiar la intercalacin predeterminada de una instancia de SQL Server, puede especificar una intercalacin predeterminada para cada nueva base de datos que cree.

Vea tambin
Conceptos
Compatibilidad con la intercalacin y Unicode
Establecer o cambiar la intercalacin de base de datos
Establecer o cambiar la intercalacin de columnas
Volver a generar bases de datos del sistema

2014 Microsoft

Establecer o cambiar la intercalacin de base de datos


SQL Server 2014
En este tema se describe cmo establecer y cambiar la intercalacin de base de datos en SQL Server 2014 mediante SQL Server Management Studio o TransactSQL. Si no se especifica
ninguna intercalacin, se utiliza la del servidor.
En este tema

Antes de empezar:
Limitaciones y restricciones
Recomendaciones
Seguridad
Para establecer o cambiar la intercalacin de base de datos, utilizando:
SQL Server Management Studio
Transact-SQL

Antes de empezar
Limitaciones y restricciones
Las intercalaciones exclusivas de Unicode de Windows se pueden utilizar nicamente con la clusula COLLATE para aplicar intercalaciones a los tipos de datos nchar, nvarchar y
ntext de nivel de columna y de nivel de datos de expresin. No se pueden utilizar con la clusula COLLATE para cambiar la intercalacin de una instancia de la base de datos o
del servidor.
Si la intercalacin especificada o la intercalacin usada por el objeto al que se hace referencia utiliza una pgina de cdigos no admitida por Windows, el Motor de base de
datos muestra un error.

Recomendaciones
Puede buscar los nombres de intercalacin admitidos en Nombre de intercalacin de Windows TransactSQL y Nombre de intercalacin de SQL Server TransactSQL, o puede
utilizar la funcin del sistema sys.fn_helpcollations (Transact-SQL).
Al modificar la intercalacin de la base de datos tambin se cambian los siguientes elementos:
Todas las columnas char, varchar, text, nchar, nvarchar o ntext de las tablas del sistema se cambian a la nueva intercalacin.
Todos los parmetros char, varchar, text, nchar, nvarchar o ntext y valores devueltos escalares existentes para los procedimientos almacenados y las funciones definidas
por el usuario se cambian a la nueva intercalacin.
Los tipos de datos del sistema char, varchar, text, nchar, nvarchar o ntext y todos los tipos de datos definidos por el usuario basados en estos tipos de datos del
sistema se cambian a la nueva intercalacin predeterminada.
Para cambiar la intercalacin de cualquier objeto nuevo creado en una base de datos de usuario, utilice la clusula COLLATE de la instruccin ALTER DATABASE. Esta instruccin
no modifica la intercalacin de las columnas de ninguna de las tablas definidas por el usuario existentes. Para modificarlas, utilice la clusula COLLATE de ALTER TABLE.

Seguridad
Permisos
CREATE DATABASE
Requiere el permiso CREATE DATABASE en la base de datos maestra, o los permisos CREATE ANY DATABASE o ALTER ANY DATABASE.
ALTER DATABASE
Requiere el permiso ALTER en la base de datos.

[Principio]

Usar SQL Server Management Studio


Para establecer o cambiar la intercalacin de base de datos
1. En el Explorador de objetos, conctese a una instancia de Motor de base de datos de SQL Server, expndala y, a continuacin, expanda Bases de datos.
2. Si est creando una base de datos, haga clic con el botn secundario en Bases de datos y haga clic en Nueva base de datos. Si no desea que la intercalacin predeterminada,
haga clic en la pgina Opciones y seleccione una intercalacin en la lista desplegable Intercalacin.

Como alternativa, si la base de datos ya existe, haga clic con el botn secundario en la base de datos que desee y haga clic en Propiedades. Haga clic en la pgina Opciones y
seleccione una intercalacin en la lista desplegable Intercalacin.
3. Cuando haya terminado, haga clic en Aceptar.

[Principio]

Usar Transact-SQL
Para establecer la intercalacin de base de datos
1. Conctese al Motor de base de datos.
2. En la barra Estndar, haga clic en Nueva consulta.
3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar. En este ejemplo se muestra cmo usar la clusula COLLATE para especificar un nombre de
intercalacin. En el ejemplo de crea la base de datos MyOptionsTest que utiliza la intercalacin Latin1_General_100_CS_AS_SC. Despus de crear la base de datos, ejecute la
instruccin SELECT para comprobar la configuracin.

Transact-SQL
USE master;
GO
IF DB_ID (N'MyOptionsTest') IS NOT NULL
DROP DATABASE MyOptionsTest;
GO
CREATE DATABASE MyOptionsTest
COLLATE Latin1_General_100_CS_AS_SC;
GO
--Verify the collation setting.
SELECT name, collation_name
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO

Para cambiar la intercalacin de base de datos


1. Conctese con el Motor de base de datos.
2. En la barra Estndar, haga clic en Nueva consulta.
3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar. En este ejemplo se muestra cmo usar la clusula COLLATE en una instruccin ALTER
DATABASE para cambiar el nombre de la intercalacin. Ejecute la instruccin SELECT para comprobar el cambio.

Transact-SQL
USE master;
GO
ALTER DATABASE MyOptionsTest
COLLATE French_CI_AS ;
GO
--Verify the collation setting.
SELECT name, collation_name
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO

[Principio]

Vea tambin
Referencia
sys.fn_helpcollations (Transact-SQL)
sys.databases (Transact-SQL)
Nombre de intercalacin de SQL Server TransactSQL
Nombre de intercalacin de Windows TransactSQL
COLLATE (Transact-SQL)
Prioridad de intercalacin TransactSQL
CREATE TABLE (SQL Server)
CREATE DATABASE (Transact-SQL de SQL Server)
ALTER TABLE (Transact-SQL)
ALTER DATABASE (Transact-SQL)

Conceptos
Compatibilidad con la intercalacin y Unicode

2014 Microsoft

Establecer o cambiar la intercalacin de columnas


SQL Server 2014
Puede invalidar la intercalacin de base de datos para los datos char, varchar, text, nchar, nvarchar y ntext especificando una intercalacin diferente para una columna especfica de una
tabla y utilizando una de las siguientes clusulas:

La clusula COLLATE de CREATE TABLE y ALTER TABLE. Por ejemplo:

CREATE TABLE dbo.MyTable


(PrimaryKey
int PRIMARY KEY,
CharCol
varchar(10) COLLATE French_CI_AS NOT NULL
);
GO
ALTER TABLE dbo.MyTable ALTER COLUMN CharCol
varchar(10)COLLATE Latin1_General_CI_AS NOT NULL;
GO

SQL Server Management Studio. Para obtener ms informacin, vea Compatibilidad con la intercalacin y Unicode.
Usar la propiedad Column.Collation de Objetos de administracin de SQL Server SMO.

No puede cambiar una intercalacin de una columna a la que se hace referencia mediante uno de los siguientes elementos:

Una columna calculada


Un ndice
Estadsticas de distribucin, ya sean generadas automticamente o mediante la instruccin CREATE STATISTICS
Una restriccin CHECK
Una restriccin FOREIGN KEY

Al trabajar con la base de datos tempdb, la clusula COLLATE incluye una opcin database_default para especificar que una columna de una tabla temporal utilice el valor predeterminado
de intercalacin de la base de datos del usuario actual para la conexin en lugar de la intercalacin de tempdb.

Intercalaciones y columnas de texto


Puede insertar o actualizar los valores de una columna text cuya intercalacin sea diferente a la de la pgina de cdigos de la intercalacin predeterminada de la base de datos. SQL
Server convierte implcitamente los valores a la intercalacin de la columna.

Intercalacin y tempdb
La base de datos tempdb se crea cada vez que se inicia SQL Server y tiene la misma intercalacin predeterminada que la base de datos model. Suele ser la misma que la intercalacin
predeterminada de la instancia. Si crea una base de datos de usuario y especifica una intercalacin predeterminada distinta de model, la base de datos de usuario tiene una
intercalacin predeterminada distinta de tempdb. Todos los procedimientos almacenados temporales o tablas temporales se crean y se almacenan en tempdb. Esto significa que
todas las columnas implcitas de las tablas temporales y todas las constantes, variables y parmetros coaccionablepredeterminados en los procedimientos almacenados temporales
tienen intercalaciones distintas de los objetos comparables creados en las tablas y procedimientos almacenados permanentes.
Esto puede causar problemas con una discrepancia en intercalaciones entre bases de datos definidas por el usuario y objetos de base de datos del sistema. Por ejemplo, una instancia
de SQL Server utiliza la intercalacin Latin1_General_CS_AS y se ejecutan las siguientes instrucciones:

CREATE DATABASE TestDB COLLATE Estonian_CS_AS;


USE TestDB;
CREATE TABLE TestPermTab (PrimaryKey int PRIMARY KEY, Col1 nchar );

En este sistema, la base de datos tempdb utiliza la intercalacin Latin1_General_CS_AS con la pgina de cdigos 1252, y TestDB y TestPermTab.Col1 utilizan la intercalacin
Estonian_CS_AS con la pgina de cdigos 1257. Por ejemplo:

USE TestDB;
GO
-- Create a temporary table with the same column declarations
-- as TestPermTab
CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY, Col1 nchar );
INSERT INTO #TestTempTab
SELECT * FROM TestPermTab;
GO

Con el ejemplo anterior, la base de datos tempdb utiliza la intercalacin Latin1_General_CS_AS collation; y TestDB y TestTab.Col1 utilizan la intercalacin Estonian_CS_AS. Por ejemplo:

SELECT * FROM TestPermTab AS a INNER JOIN #TestTempTab on a.Col1 = #TestTempTab.Col1;

Dado que tempdb utiliza la intercalacin de servidor predeterminada y TestPermTab.Col1 utiliza una intercalacin diferente, SQL Server devuelve este error: "No se puede resolver el
conflicto de intercalacin entre 'Latin1_General_CI_AS_KS_WS' y 'Estonian_CS_AS' en la operacin Igual a".

Para evitar el error, puede utilizar cualquiera de las alternativas siguientes:

Especifique que la columna de la tabla temporal utilice la intercalacin predeterminada de la base de datos de usuario, no tempdb. Esto permite que la tabla temporal trabaje
con tablas de un formato parecido en varias bases de datos, si es un requisito de su sistema.

CREATE TABLE #TestTempTab


(PrimaryKey int PRIMARY KEY,
Col1 nchar COLLATE database_default
);

Especifique la intercalacin correcta de la columna #TestTempTab:

CREATE TABLE #TestTempTab


(PrimaryKey int PRIMARY KEY,
Col1 nchar COLLATE Estonian_CS_AS
);

Vea tambin
Conceptos
Configurar o cambiar la intercalacin del servidor
Establecer o cambiar la intercalacin de base de datos
Compatibilidad con la intercalacin y Unicode

2014 Microsoft

Ver informacin de intercalacin


SQL Server 2014
Puede ver la intercalacin de un servidor, una base de datos o una columna en SQL Server Management Studio mediante las opciones de men del Explorador de objetos o mediante
Transact-SQL.

Cmo ver una configuracin de intercalacin


Puede usar cualquiera de los siguientes medios:

SQL Server Management Studio


Transact-SQL

Usar SQL Server Management Studio


Para ver una configuracin de intercalacin de un servidor instancia de SQL Server en el Explorador de objetos

1. En el Explorador de objetos, conctese a una instancia de Motor de base de datos.


2. Haga clic con el botn secundario del mouse en la instancia y seleccione Propiedades.

Para ver una configuracin de intercalacin de una base de datos en el Explorador de objetos

1. En el Explorador de objetos, conctese a una instancia de Motor de base de datos y expndala.


2. Expanda Bases de datos, haga clic con el botn secundario en la base de datos y seleccione Propiedades.

Para ver una configuracin de intercalacin de una columna en el Explorador de objetos

1. En el Explorador de objetos, conctese a una instancia de Motor de base de datos y expndala.


2. Expanda Bases de datos, la base de datos y, por ltimo, Tablas.
3. Expanda la tabla que contiene la columna y, a continuacin, Columnas.
4. Haga clic con el botn secundario en la columna y seleccione Propiedades. Si la propiedad collation est vaca, la columna no es un tipo de datos de caracteres.

[Arriba]

Usar Transact-SQL
Para ver la configuracin de intercalacin de un servidor

1. En el Explorador de objetos, conctese a una instancia de Motor de base de datos y, en la barra de herramientas, haga clic en Nueva consulta.
2. En la ventana de consulta, escriba la siguiente instruccin que usa la funcin de sistema SERVERPROPERTY.

SELECT CONVERT (varchar, SERVERPROPERTY('collation'));

3. Tambin puede usar el procedimiento almacenado del sistema sp_helpsort.

EXECUTE sp_helpsort;

Para ver todas las intercalaciones admitidas por SQL Server 2014

1. En el Explorador de objetos, conctese a una instancia de Motor de base de datos y, en la barra de herramientas, haga clic en Nueva consulta.
2. En la ventana de consulta, escriba la siguiente instruccin que usa la funcin de sistema SERVERPROPERTY.

SELECT name, description FROM sys.fn_helpcollations();

Para ver la configuracin de intercalacin de una base de datos

1. En el Explorador de objetos, conctese a una instancia de Motor de base de datos y, en la barra de herramientas, haga clic en Nueva consulta.
2. En la ventana de consulta, escriba la siguiente instruccin que usa la vista de catlogo del sistema sys.databases.

SELECT name, collation_name FROM sys.databases;

3. Tambin puede usar la funcin del sistema DATABASEPROPERTYEX.

SELECT CONVERT (varchar, DATABASEPROPERTYEX('database_name','collation'));

Para ver la configuracin de intercalacin de una columna

1. En el Explorador de objetos, conctese a una instancia de Motor de base de datos y, en la barra de herramientas, haga clic en Nueva consulta.
2. En la ventana de consulta, escriba la siguiente instruccin que usa la vista de catlogo del sistema sys.columns.

SELECT name, collation_name FROM sys.columns WHERE name = N'<insert character data type column name>';

[Arriba]

Vea tambin
Referencia
SERVERPROPERTY (Transact-SQL)
sys.fn_helpcollations (Transact-SQL)
sys.databases (Transact-SQL)
sys.columns (Transact-SQL)
Prioridad de intercalacin TransactSQL
sp_helpsort (Transact-SQL)

2014 Microsoft

Escribir instrucciones Transact-SQL internacionales


SQL Server 2014
Las bases de datos y las aplicaciones de bases de datos que utilizan instrucciones TransactSQL obtendrn una mayor portabilidad de un idioma a otro, o admitirn varios idiomas, si se
siguen estas directrices:

Reemplace todos los tipos de datos char, varchar y text con nchar, nvarchar y nvarchar(max) respectivamente. De esta forma, se evita problemas de conversin de pginas de
cdigos. Para obtener ms informacin, vea Compatibilidad con la intercalacin y Unicode.
Cuando realice comparaciones y operaciones con los meses y das de la semana, utilice las partes numricas de la fecha en lugar de cadenas de nombres. Las distintas
configuraciones de idioma devuelven nombres diferentes para los meses y los das de la semana. Por ejemplo, DATENAME(MONTH,GETDATE()) devuelve May cuando el idioma
est establecido en ingls de EE.UU. Mai cuando el idioma es alemn y mai cuando el idioma es francs. En su lugar, utilice una funcin como DATEPART que utiliza el nmero del
mes en lugar del nombre. Utilice los nombres DATEPART cuando genere conjuntos de resultados que se van a mostrar al usuario ya que, generalmente, los nombres de fecha
resultan ms significativos que una representacin numrica. No codifique, sin embargo, ninguna lgica que dependa de que los nombres mostrados estn en un idioma
determinado.
Cuando especifique fechas en las comparaciones o como entrada de las instrucciones INSERT o UPDATE, utilice constantes que se interpretan igual en todas las configuraciones de
idioma:
Las aplicaciones ADO, OLE DB y ODBC deben utilizar la siguiente marca de tiempo, fecha y clusulas de escape de hora ODBC:
{ ts 'aaaa-mm-ddhh:mm:ss[.fff] '} como: { ts'1998-09-24 10:02:20' }
{ d ' aaaa - mm - dd '} como: { d'1998-09-24'}
{ t ' hh : mm : ss '} como: { t'10:02:20'}
Las aplicaciones que utilizan otras API o desencadenadores, procedimientos almacenados y scripts TransactSQL deben utilizar las cadenas numricas sin separar. Por
ejemplo, yyyymmdd como en 19980924.
Las aplicaciones que usan otras API o scripts, procedimientos almacenados y desencadenadores TransactSQL deben utilizar la instruccin CONVERT con un parmetro de
estilo explcito para todas las conversiones entre los tipos de datos time, date, smalldate, datetime, datetime2 y datetimeoffset y los tipos de datos de cadenas de
caracteres. Por ejemplo, la siguiente instruccin se interpreta igual en todas las configuraciones de conexin de formato de fecha o de idioma:

SELECT *
FROM AdventureWorks2012.Sales.SalesOrderHeader
WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)

Para obtener ms informacin, vea CAST y CONVERT (Transact-SQL).

2014 Microsoft

Establecer un idioma de la sesin


SQL Server 2014
El idioma de la sesin se puede utilizar para establecer la forma en que se muestran los siguientes elementos en el servidor, dependiendo de la preferencia cultural y de idioma:

El lenguaje que se usar para los mensajes de error y otros mensajes del sistema. SQL Server admite varias copias de todas las cadenas de error del sistema y mensajes en todos
los idiomas en los que SQL Server est disponible. Estos mensajes se pueden ver en la vista de catlogo sys.messages. Cuando se instala una versin traducida de SQL Server,
estos mensajes del sistema se traducen a la versin de idioma que se instala. Tambin se obtiene de forma predeterminada. El conjunto en ingls de EE.UU. de estos mensajes
Adems, se pueden agregar mensajes definidos por el usuario en un idioma especfico con sp_addmessage.
El formato de los datos de fecha y hora.
Los nombres de das y meses, incluidas las abreviaturas.
El primer da de la semana.
Los datos de moneda.

Existen 33 idiomas disponibles para ser utilizados como valores de la sesin. Para obtener una lista de los idiomas, vea sys.syslanguages.

Configurar el idioma de la sesin desde el servidor


Para establecer el idioma de la sesin desde el servidor, utilice SET LANGUAGE.

Configurar el idioma de la sesin desde el cliente


El idioma de la sesin se puede establecer del lado cliente con OLE DB, ODBC o ADO.NET. Para OLE DB, utilice la propiedad SSPROP_INIT_CURRENTLANGUAGE. Para obtener ms
informacin, vea Propiedades de inicializacin y autorizacin.
Para ODBC, utilice la palabra clave Language. Para obtener ms informacin, vea SQLConfigDataSource.
Para ADO.NET, utilice el parmetro Current Language del objeto ConnectionString. Para obtener ms informacin, vea la documentacin del kit de desarrollo de software SDK de
Microsoft Data Access Components (MDAC).

2014 Microsoft

You might also like