sql >> Base de Datos >  >> RDS >> Sqlserver

No se puede resolver el conflicto de intercalación

Lo que pasa con las intercalaciones es que, aunque la base de datos tiene su propia intercalación, cada tabla y cada columna pueden tener su propia intercalación. Si no se especifica, toma el valor predeterminado de su objeto principal, pero puede ser diferente.

Cuando cambia la intercalación de la base de datos, será el nuevo valor predeterminado para todas las tablas y columnas nuevas, pero no cambia la intercalación de los objetos existentes dentro de la base de datos. Tienes que ir y cambiar manualmente la intercalación de cada tabla y columna.

Afortunadamente, hay scripts disponibles en Internet que pueden hacer el trabajo. No voy a recomendar ninguno porque no los he probado, pero aquí hay algunos enlaces:

http://www.codeproject.com/Articles/302405/La-Manera-Fácil-de-cambiar-Collation-of-all-Database

Actualizar la intercalación de todos los campos en la base de datos sobre la marcha

http://www.sqlservercentral.com/Forums/Topic820675-146-1.aspx

Si necesita tener una intercalación diferente en dos objetos o no puede cambiar las intercalaciones, aún puede JOIN entre ellos usando COLLATE comando y seleccionando la intercalación que desea unir.

SELECT * FROM A JOIN B ON A.Text = B.Text COLLATE Latin1_General_CI_AS 

o utilizando la intercalación de base de datos predeterminada:

SELECT * FROM A JOIN B ON A.Text = B.Text COLLATE DATABASE_DEFAULT