Descubre cómo configurar SQL Collate, también conocida como “collation” o “intercalación” en español.
La mayoría de los administradores de sistemas no saben que es la intercalación o la collation hasta que no tienen problemas con ella. Por lo general, todos los que hemos desplegado SQL Server o aplicativos como Microsoft System Center hemos configurado esta característica, aunque lo hacíamos siguiendo los requisitos de instalación y sin saber muy bien que era.
Por desgracia, el no saber que funcionalidad tiene ha hecho que muchos administradores o técnicos de sistemas hayan experimentado problemas, ya que una incorrecta configuración de este parámetro puede desencadenar todo tipo de problemas tanto en la propia base de datos como en los aplicativos que conectan contra esta.
Pero, ¿por qué se producen estos problemas? ¿Por qué es tan importante este parámetro? ¿Qué es lo que hace?
El SQL Collate (referido como SQL Collation según la fuente) es la propiedad de la base de datos que proporciona la distinciónentre caracteres como acentos, mayúsculas, minúsculas, otros caracteres soportados y reglas de ordenación para los datos que la base de datos es capaz de manejar.
La intercalación (SQL Collate), por tanto, especificará a la base de datos tanto los patrones de bits que representan cada caracter contenido en el juego de caracteres vinculados a una región, como las reglas de comparación u ordenación de datos.
Para entender la importancia de esto, podemos pensar en nuestra letra más castiza, la eñe (Ñ), que es una letra que no se encuentra presente en la lengua inglesa, por ejemplo. Lo mismo pasaría con el árabe, el japonés, etc.
Esto hace que no sea lo mismo utilizar un juego de caracteres que otro, ya que podemos encontrarnos con que la aplicación genere caracteres que no sean manejables o entendibles por la base de datos, comportándose de manera imprevisible.
Por todo lo expuesto anteriormente, podemos decir que el SQL Collate viene condicionado por la región donde se vaya a instalar y explotar la base de datos o el aplicativo y, tal como hemos podido ver, la configuración de este parámetro es un punto crítico del despliegue, aunque podrá ser modificado posteriormente en caso de ser necesario.
¿Cómo configurar SQL Collate en tu SQL server?
Pre-requisitos o pre-configuración
Para completar de forma satisfactoria este tutorial y poder configurar SQL Collate se necesitará:
- Tener un Servidor con Windows Server.
- Tener un SQL Server instalado en el servidor.
Paso 1. Cómo consultar el SQL Collate de nuestra base de datos
Una vez comentado esto, vamos a ver como consular la intercalación o SQL Collation que tenemos configurada en nuestra base de datos, para ver a continuación cómo podemos configurarlo tanto desde la consola gráfica como desde línea de comandos.
En el caso de la consulta del valor de SQL Collate, podemos realizarla de distintas maneras:
- Podemos consultarlo desde la consola gráfica.
- Podemos consultarlo mediante ejecución de SQL (de varias maneras).
Empezaremos por ver como hacerlo de la manera más sencilla, haciendo uso de la consola gráfica de SSMS (SQL Server Management Studio), que es la herramienta de administración de SQL Server con la que todo técnico ha tenido que lidiar en alguna ocasión.
Una vez dentro de la consola de SSMS se debe ir al Explorador de Objetos, situado en el lateral, hacer clic con el botón derecho sobre el nombre del servidor (1) y hacer clic en “Propiedades” (2) entre las opciones que se muestran.
Mostramos las propiedades de la base de datos
Una vez hecho esto, se mostrará una ventana emergente con las propiedades del servidor de SQL, entre las que se debe comprobar el valor de “Server Collation” (3).
Comprobamos la propiedad de Server Collate dentro de las propiedades de la base de datos
Otra forma de comprobarlo es mediante una consulta de SQL. Para ello se debe ir a la consola de SSMS y hacer clic en “Nueva query” (4).
A continuación, dentro del espacio para consultas, se debe introducir la siguiente consulta (5):
SELECT SERVERPROPERTY(‘collation’) AS ServerCollation;
Una vez hecho esto, se debe hacer clic en “Execute” (6).
Si todo va bien, se podrá ver el mensaje “Query executed succesfully” (7) en la zona de mensajes y la respuesta del sistema en la parte de “Resultados” (8).
De esta manera podremos ver que configuración de intercalación tiene.
Comprobamos la configuración de SQL Collate mediante consulta SQL
A continuación vamos a ver otra forma de hacer la consulta de la SQL Collation en la que se hace una consulta a todas las instancias.
Dentro de la consola de SSMS hacer clic en “Nueva query” (9).
Dentro del espacio para consultas, se debe introducir la siguiente consulta (10):
SELECT name, collation_name DbCollation
FROM sys.database
Una vez hecho esto, se debe hacer clic en “Execute” (11).
Al igual que pasaba en el caso anterior, si todo va bien se podrá ver el mensaje “Query executed succesfully” (12) en la zona de mensajes y la respuesta del sistema en la parte de “Resultados” (13).
De esta manera podremos ver que configuración de intercalación tiene cada una de ellas.
Consultamos la SQL Collation de todas las bases de datos configuradas
Con esto podemos dar por concluida la parte de consultas y podemos ponernos con la parte que interesa.
Paso 2. Configurar SQL Collate desde línea de comandos
Existen distintas maneras de cambiar el SQL Collate de una base de datos, pero vamos a describir el que quizá sea más sencillo de implementar, ya que lo que buscamos es minimizar el costo operacional pero manteniendo la eficiencia.
NOTA: Es más que recomendable hacer copia de seguridad de todas las bases de datos que se hayan implementado en el servidor para evitar posibles pérdidas de información en caso de desastre.
Para realizar esta operativa, lo primero que tendremos que hacer es detener el servicio de SQL Server. Esto permitirá hacer la operativa sin que haya conexiones de usuarios a las bases de datos y así evitar problemas de diversa índole.
Para ello se debe acceder a la consola de Servicios del sistema, que puede ser accedida de muchas maneras, pero en este caso se debe ir a la barra de búsqueda y escribir“Servicios” (14), haciendo clic sobre la aplicación que se muestra (15).
Lanzamos la consola de administración de servicios del servidor
Dentro de la consola de Servicios se debe buscar el servicio “SQL Server (MSSQLSERVER)” que es el servicio que ejecuta la base de datos de Microsoft SQL Server y que vamos a detener para evitar problemas durante la operativa.
Una vez localizado el servicio “SQL Server (MSSQLSERVER)” se debe hacer clic con el botón derecho (16) y hacer clic en “Detener” (17) entre las opciones que se muestran. Esto desencadenará la parada del servicio, que no debería tomar mas que unos pocos segundos, aunque el tiempo que tome en esta acción dependerá de la carga del servidor.
Detenemos el servicio de SQL Server para poder hacer el cambio del valor de SQL Collate
Cuando estamos seguros de que el servicio está parado, podemos lanzar una consola de CMD (Command) con privilegios de administrador, que en realidad deberían ser heredados si estamos en una sesión con estos privilegios.
Desde la consola de CMD se debe ejecutar el siguiente comando (18):
sqlservr -m -T4022 -T3659 -s»MSSQLSERVER» -q»SQL_Latin1_General_CP1_CI_AS»
Donde tenemos los siguientes parámetros:
- -m: Hace que la ejecución se haga em modo mono usuario de administrador (single user admin mode).
- -T: Activa la traza durante la ejecución y el arranque.
- -s: Se usa para pasar el nombre de la instancia. Si se desconoce se puede usar la instancia por defecto de la base de datos, que es «MSSQLSERVER».
- -q: Para pasar la nueva intercalación (SQL Collate) que queremos aplicar, que en nuestro caso es «SQL_Latin1_General_CP1_CI_AS».
Además usamos dos flags de traza en esta ejecución:
- T4022: Hace un baypass del proceso de arranque de SQL Server.
- T3569: Deriva todos los errores de validación al “errorlog” durante el proceso de arranque.
Lo mismo podríamos hacer para pasarla a Francés, por ejemplo:
sqlservr -m -T4022 -T3659 -s»MSSQLSERVER» -q»French_CI_AS»
Lanzamos el comando para cambiar el SQL Collate de la base de datos
Durante la ejecución, se genera un gran volumen de mensajes derivados de los cambios (19) y que se muestran por pantalla, por lo que el administrado podrá revisarlos si así lo desea.
Al finalizar la ejecución, queda en stand by, esperando que el usuario le mande una señal de fin de ejecución con un “Control + C” (20).
Salimos de la ejecución del cambio de SQL Collate de manera manual
A continuación se debe volver al administrador de servicio y buscar el servicio “SQL Server (MSSQLSERVER)” se debe hacer clic con el botón derecho (21) y hacer clic en “Iniciar” (22) entre las opciones que se muestran. Esto desencadenará el inicio del servicio, que tardará unos pocos segundos, aunque nuevamente, el tiempo que tome en esta acción dependerá de la carga del servidor.
Iniciamos de nuevo el proceso de SQL Server
Tras esto, podremos comprobar de nuevo el estado de la intercalación lanzando nuevamente una consulta.
Para ello volvemos a la consola de SSMS y dentro del Explorador de Objetos, hacemos clic con el botón derecho sobre el nombre del servidor (23) y clic en “Propiedades” (24) entre las opciones que se muestran.
Volvemos a mostrar las propiedades de la base de datos
Una vez hecho esto, se muestra la ventana de las propiedades del servidor de SQL, entre las que se debe comprobar el valor de “Server Collation” (25) que debería mostrar la intercalación correcta.
Comprobamos que la configuración de SQL Collate se ha realizado con éxito
Y con esto tendríamos toda la operativa realizada y el valor de SQL Collate (SQL Collation) bien configurado.
Conclusiones
La intercalación, también conocida como SQL Collation o SQL Collate, es la propiedad de la base de datos que especifica los patrones de bits que van a representar cada caracter del juego de datos que utiliza nuestro idioma, así como la forma en que se podrán comparar u ordenar datos. Siendo un aspecto crucial para el buen funcionamiento de nuestras aplicaciones y bases de datos.
El no tener correctamente configurada esta propiedad puede producir comportamientos indeseados, y esta es la razón por la que se describen en este artículo varias formas para configurarlo, de manera que no de problemas para los usuarios que trabajan con sistemas ES_ES.