Error de intercalacion

Jose
22 de Julio del 2005
En una aplicacion contable que estoy arregalndo me sale el siguiente error:

No se puede resolver el conflicto de intercalacion para el operador equal to

Soy bastante nuevo en esto del Visual y Sql y no tengo ni idea de por donde pueden ir los tiros, aunque se que acabamos de cambiar el servidor. ¿ Puede ser que se nos olvidara instalar alguna herramienta o parche?.

David
22 de Julio del 2005
La intercalación es (más o menos) el juego de caracteres que utiliza la base de datos. Si realizas las consultas a través de un programa, escrito en .Net por ejemplo, contra una base de datos, por ejemplo SQL Server, es posible que haya conflicto entre los juegos de caracteres del Sistema Operativo y de la base de datos. Es más, entre dos tablas de una misma base de datos se pueden definir distintas intercalaciones. Si las intercalaciones son distintas y se realiza una comparación se produce el conflicto. Por ejemplo, si intentas comparar una cadena de una tabla con intercalación Modern_Spanish_CI_AI y Modern_Spanish_CI_AS (una distingue entre acentos y la otra no) se produce el conflicto.
Para solucionarlo debes poner el mismo tipo de intercalación en las columnas de las tablas a comparar, aunque estoy buscando información para ver si se puede hacer algún tipo de CAST

Dairo Puentes
22 de Julio del 2005
Hola, lo que debe hacer es crear las columnas con el mismo idioma de intercalacion, ejemplo: COLLATE SQL_Latin1_General_CP1_CI_AS para todas las tablas

Ustekabe
22 de Julio del 2005
Cuando vayas a hacer una comparación, puedes añadir después de cada elemento a comparar la intercalación que quieres usar. Por ejemplo:

...WHERE <Tabla1.NombreCampo> COLLATE Modern_Spanish_CI_AS = <Tabla2.NombreCampo> COLLATE Modern_Spanish_CI_AS

Si sabes positivamente que uno de los términos está ya con la intercalación que quieres usar, puedes omitirla en ese lado de la comparación. En el ejemplo de antes, si la tabla 2 ya está creada usando la intercalación Modern_Spanish_CI_AS, podrías poner:

...WHERE <Tabla1.NombreCampo> COLLATE Modern_Spanish_CI_AS = <Tabla2.NombreCampo>