Last Updated on 22 agosto, 2017 by Pablo Ariel Di Loreto
La Intercalación [Collation] de una instancia de SQL Server se configura durante su instalación. Luego de este momento, el cambio de la misma suele ser tedioso.
En esta publicación vamos a demostrar cómo podemos realizar un cambio de Intercalación [Collation] en una instancia pre-existente de SQL Server, incluyendo las consideraciones y recomendaciones necesarias para que dicho proceso sea efectivo.
Aspectos a tener en cuenta son muchos, por lo cual recomendamos prestar especial atención a las conclusiones del presente «How-To».
Tabla de Contenidos
- 1 Introducción
- 2 Alcance Técnico
- 3 Desarrollo
- 4 Conclusiones
- 5 Referencias y Links
- 6 Publicaciones Relacionadas
- 7 Acerca del Autor
Introducción
Objetivo
Esta publicación tiene como objetivo demostrar a los Administradores de IT cómo realizar el cambio de Intercalación [Collation] de una Instancia pre-existente de SQL Server.
Audiencia
Este documento está dirigido a Consultores, Profesionales IT y personas que desarrollan tareas de Consultoría, Administración y Soporte o que simplemente están interesados en leer e investigar sobre la tecnología alcanzada por esta publicación.
Comentarios y Corrección de Errores
Hemos realizado nuestro mejor esfuerzo para no cometer errores, pero al fin y al cabo somos seres humanos. Si deseás reportar algún error o darnos feedback de qué te pareció esta publicación, por favor no dejes de comunicarte con nosotros a través de correo electrónico a la siguiente dirección: info@tectimes.net.
Alcance Técnico
Entender cuál es el alcance de la publicación nos ayuda a tener una expectativa real de lo que encontraremos en la misma, de modo tal que quién lo lee no espere ni más ni menos de lo que encontrará. Vamos a describir el objetivo técnico, tecnologías alcanzadas, escenario de trabajo y plan de trabajo en alto nivel.
Objetivo Técnico
El objetivo técnico de este tutorial es realizar el cambio de Intercalación de una instancia de SQL Server hacia «Latin1_General_CI_AS_KS_WS».
Tecnologías Alcanzadas
Las tecnologías alcanzadas por esta publicación son las siguientes:
- Windows Server 2012 R2.
- SQL Server 2012 SP1.
- CMD de Windows.
No obstante, se ha comprobado que estos procedimientos pueden ser utilizados en versiones SQL Server 2005 o superior. En el desarrollo de esta publicación serán explicadas las diferencias.
Escenario de Trabajo
El escenario de trabajo que da marco a esta publicación es el siguiente:
- Una instancia de SQL Server 2012 con SP1 instalada y configurada sobre Windows Server 2012 R2.
- La instancia cuenta con bases de datos de usuario existentes.
- Se cuenta con el Disco de Instalación de SQL Server.
Plan de Trabajo
El plan de trabajo a desarrollar en esta publicación es el siguiente:
- Preparación del Cambio de Intercalación.
- Cambio de Intercalación.
- Recuperación de Base de Datos.
Desarrollo
Aquí se desarrollará el artículo y/o tutorial.
Preparación del Cambio de Intercalación [Collation]
Es importante que las próximas dos tareas las realicemos con el mayor de los cuidados, dado que de cometer algún error no vamos a poder recuperar las bases de datos que teníamos originalmente.
Además de esto, es importante tener en cuenta que no estamos considerando aspectos de «calidad» de datos. Las bases de datos pre-existentes en una instancia con una Intercalación [Collation] específica y distinta a la que vayamos a utilizar luego puede generar que los datos se guarden de distinta manera. Este aspecto queda fuera de alcance en el análisis, pero DEBE ser tenido en cuenta.
Resguardo de Bases de Datos de la Instancia
Debemos realizar el resguardo de las bases de datos, dado que vamos a tener que eliminarlas de la instancia para poder realizar el cambio de Intercalación [Collation]. Esto generará, por supuesto, disrupción de servicio.
Eliminación de Bases de Datos de la Instancia
Una vez que hayamos realizado el Resguardo [Backup] de las bases de datos, podemos eliminarlas. Para ello podemos utilizar scripts masivos de eliminación. Para ello podemos consultar las «Publicaciones Relacionadas» al final de la página.
Cambio de Intercalación [Collation]
A estas alturas ya hemos eliminado todas las bases de datos de usuario de la Instancia. Ahora vamos a realizar el cambio de Intercalación [Collation] en la instancia. En este caso puntual estamos trabajando con SQL Server 2012 y utilizaremos el siguiente comando en el disco de instalación de SQL Server (si si, debemos tenerlo y montarlo en el Equipo):
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ] /SQLCOLLATION=CollationName
Vamos a tener que reemplazar «CollationName» por el nombre de la Intercalación [Collation] que queremos tener, la cual en nuestro caso es «Latin1_General_CI_AS_KS_WS». De este modo el CMD quedaría de la siguiente manera:
El proceso demorará unos minutos, y al finalizar vamos a tener nuestra instancia con la Intercalación [Collation] nueva seleccionada y configurada.
Cambio de Intercalación [Collation] en otras versiones de SQL Server
SQL Server 2005
En el caso de tratarse de un SQL Server 2005 debemos ejecutar el siguiente comando:
start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=test SQLCOLLATION=CollationName
SQL Server 2008
En el caso de tratarse de un SQL Server 2008 debemos ejecutar el siguiente comando:
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ] /SQLCOLLATION=CollationName
SQL Server 2008 R2
En el caso de tratarse de un SQL Server 2008 debemos ejecutar el siguiente comando:
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ] /SQLCOLLATION=CollationName
SQL Server 2012
Como ya hemos visto en el primer ejemplo, en el caso de tratarse de un SQL Server 2012 debemos ejecutar el siguiente comando:
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ] /SQLCOLLATION=CollationName
SQL Server 2014
En el caso de tratarse de un SQL Server 2014 debemos ejecutar el siguiente comando:
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ] /SQLCOLLATION=CollationName
Recuperación de Bases de Datos de la Instancia
Una vez que ya hemos realizado el cambio de Intercalación [Collation] en nuestra instancia, podemos restaurar las bases de datos.
Como hemos comentado anteriormente, es importante tener en cuenta que no estamos considerando aspectos de «calidad» de datos. Las bases de datos pre-existentes en una instancia con una Intercalación [Collation] específica y distinta a la que vayamos a utilizar luego puede generar que los datos se guarden de distinta manera. Este aspecto queda fuera de alcance en el análisis, pero DEBE ser tenido en cuenta.
Conclusiones
Hemos recorrido los pasos necesarios para poder realizar el cambio de una Intercalación [Collation] en una instancia existente de SQL Server sin necesidad de reinstalar el producto.
No obstante, hemos dejado en claro que para poder realizar este procedimiento es necesario que no existan bases de datos sobre la instancia a modificar, lo cual requiere que hagamos backup y restore de las mismas.
Por último, es importante tener en cuenta que no hemos considerado aspectos de «calidad» de datos. Las bases de datos pre-existentes en una instancia con una Intercalación [Collation] específica y distinta a la que vayamos a utilizar luego puede generar que los datos se guarden de distinta manera. Este aspecto queda fuera de alcance en el análisis, pero DEBE ser tenido en cuenta.
¡Nos estamos leyendo!
Referencias y Links
- Set or Change the Server Collation: https://msdn.microsoft.com/en-us/library/ms179254(v=sql.110).aspx
Acerca del Autor
- [Evento] Microsoft Azure | Tendencias Digitales 2019 – 26/03/2019 - 30 marzo, 2019
- [Evento] Microsoft Azure | Tendencias Digitales 2019 – 06/02/2019 - 12 febrero, 2019
- [Evento] Microsoft Azure | Modernización de Apps con la Nube de Azure – 20/12/2018 - 22 diciembre, 2018