[How-To] SQL Server | Cómo Cambiar la Collection de una Instancia en SQL Server

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”.

 

[toc]

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

 

Acerca del Autor

0 0 votes
Article Rating

Professor. Techie. Ice cream fan (dulce de leche). My favorite phrase: "Todos los días pueden no ser buenos ... pero hay algo bueno en todos los días". Currently I´m Engineering Manager at MODO (https://modo.com.ar), the payment solution that allows you to connect your money and your world to simplify everyday life. Modo is a payment solution in which you can send, order and pay from your mobile device in the safest, most practical and convenient way. I enjoy a lot of educational, technological talks and a good beer. If you want to talk, write me to pablodiloreto@hotmail.com.

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments