miércoles, 28 de julio de 2010

Error de Collation en SQL Server

Tengo una base de datos con una Collation Modern_Spanish_CI_AI e intento hacer un Join con una tabla que está en una base de datos con la Collation Modern_Spanish_CI_AS. Devolviendome un bonito error de Collation.

Ante eso me voy al Server Management Studio y en las propiedades de la Base de datos, en Options, le intento cambiar el collation… recibiendo un delicioso error. Para el cual la solución es modificar el Restrict Access de MULTI_USER a SINGLE_USER.
image 
Entonces, nos permite cambiar el collation. Y volvemos a MULTI_USER.

Peeeeero (siempre hay uno), me encuentro que el error me continua sucediendo. Por lo cual revisando y Googleando un rato me encuentro es que el cambio de Collation me ha cambiado el de todos los objetos de la BD a excepción del collation de las columnas (pero si cambia el de sus opciones extendidas… esto no hay quien lo entienda).

Para modificar esto podemos, entre otras formas, utilizar un pequeño script que nos haga un ALTER TABLE y que es así:

ALTER TABLE MyTable ALTER COLUMN CharCol
            varchar(10)COLLATE Latin1_General_CI_AS NOT NULL
GO

Lo malo es que hay que repetirlo por CADA columna de cada tabla de la base de datos. Lo cual, en este caso fue posible. Pero en casos más complejos pudiera ser mejor solución restaurar la base de datos con un Collation diferente.

1 comentario:

Hire DOT NET Developers dijo...

IMO, the iMIS database collation must match the collation of the SQL server. You will have to re-install SQL Server.