25 de octubre de 2011

Intercalación de SQL Server


Uno de los inconvenientes que se presentan durante la instalación de los sistemas ZEUS® suelen ocurrir en la configuración de la base de datos. Existen varias características importantes que se deben recordar en el proceso de instalación del motor MS-SQL, entre ellas la intercalación.



Que es la intercalación?

Técnicamente hace referencia a la forma como se representa y almacena cada carácter, y en consecuencia también se refiere a las reglas utilizadas para ordenar y comparar caracteres.

Podríamos decir que es una propiedad que define los estilos de ordenación, comparación de texto y la forma como se almacena y leen en la base de datos.  Evidentemente, se trata de un concepto que afecta sólo a los campos de texto.

La intercalación define además si el motor de SQL distingue mayúsculas y minúsculas o si trata las vocales acentuadas igual que las no acentuadas.



Porqué es importante colocar la correcta?

Pensemos inicialmente que la intercalación es como en un mapa de caracteres, donde cada carácter tiene una posición y hay un número de posiciones disponibles. En la intercalación latina una posición puede estar asociada a la ñ mientras que la asiática estar asociado a caracteres chinos lo cual permite que los latinos veamos la ñ mientras los asiáticos sus caracteres sin gastar demasiado espacio. Desde luego si tenemos una base de datos asociada a la latina pero la restauramos en una instancia predefinida como asiática, tendremos problemas.



Como saber que intercalación tenemos instalada?

Empecemos por anotar que la intercalación se da no solo a nivel de instancia de SQL, también a nivel de base de datos e incluso a nivel de columna. La forma clásica de verificar que intercalación tenemos instalada es usando el explorador de objetos del “SQL Management Studio” y hacer clic derecho sobre el nombre del servidor o de la base de datos y seleccionar del menú contextual la opción “Propiedades”, para ver la intercalación del servidor y de la base de datos respectivamente. Sin embargo también podemos hacerlo usando comandos:

Servidor: SELECT SERVERPROPERTY('collation')

Base de datos: SELECT DATABASEPROPERTYEX('Zeus', 'Collation')



La intercalación requerida por Zeus es: “Orden alfabético, no distingue mayúsculas de minúsculas,para utilizar con el juego de caracteres 1252” que en las propiedades se ve como SQL_Latin1_General_CP1_CI_AS



Podemos cambiar la intercalación?

Luego de terminar instalar un servidor SQL podemos encontrar que la intercalación requerida no quedo instalada. Muchos prefieren desinstalar e instalar nuevamente con la intercalación correcta, sin embargo es posible cambiar la intercalación.

Para cambiar la intercalación existen comandos que se ejecutan desde la línea de comandos, o bien usando un archivo .BAT si lo prefieres. Lo siguientes muestran como colocar la intercalación requerida por Zeus

Para SQL Server 2008:

D:\ Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=NombreDeLaInstancia /SQLSYSADMINACCOUNTS= "BUILTIN\ADMINISTRATORS" / SAPWD= ClaveDelsa /SQLCOLLATION= SQL_Latin1_General_Cp1_CI_AS



Para SQL Server 2005:

start /wait D:\setup.exe /qb INSTANCENAME= NombreDeLaInstancia REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD= ClaveDelsa SQLCOLLATION= SQL_Latin1_General_Cp1_CI_AS

* D:\ : hace referencia a la unidad donde se encuentra el instalador de SQL.



Es preferible hacer backup antes de hacer todo este proceso, y tener algunas precuauciones. Para más detalles recomiendo leer este artículo: http://microsoftsqlsecret.fullblog.com.ar/como-modificar-la-intercalacion-collation-en-sql-server.html






No hay comentarios:

Publicar un comentario