En este grupo En todos

Foro de SQL Server



Cannot resolve collation conflict for equal to operation

Escrito por Josem
el 07/03/2007

Buenas tardes, he visto algunos posts algo relacionados con este error pero en mi caso es que cuando quiero actualizar datos de una tabla con los de otra. Estando ambas en diferentes bases de datos.

No termino de entender eso del collation.


Un saludo, y gracias por adelantado

Santiago Carela Peguero
Republica Dominicana...
Escrito por Santiago Carela Peguero
el 08/03/2007

El Collation es la forma en que SQL server ve los datos.. Por ejemplo... Que utilize el alfabeto en español que distinga mayusculas de minusculas, que no distinga palabras con acento etc.. Existen varios tipos de collation, estas se eligen al momento de la instalación del servidor , tambien se puede definir a nivel de base de datos y de tabla, todo depende de tus necesidades.

Ej: CREATE DATABASE "SpanishDB" DATABASEPASSWORD '<MyPwd>' COLLATE Traditional_Spanish_CI_AS Aqui se crea una base de datos que utiliza el alfabeto en español no distingue mayuscula de minuscula osea "A=a" y distingue palabras con acentos "Visión <> Vision" La Recomendación es que verifiques si tus base de datos o tablas con las que estas trabajando tienen el mismo collation Saludos, Santiago Carela Rep. Dom
Escrito por Josem
el 08/03/2007

Muchísimas gracias por la respuesta, entendí bien la explicación. Lo que no llegué a conseguir de momento es la forma de averiguar el collation con el q está creada una tabla. Hay alguna forma de averiguarlo?

Un saludo

Monica Rivera
Washington, Estados ...
Escrito por Monica Rivera
el 10/03/2007

Collations se establecen al nivel de servidor (en el momento de la instalacion), de databases y de columnas.

Es decir, que las bases de datos y columnas se crean por defecto heredando el collation del servidor, pero es posible escoger un collation diferente al momento de crear una base de datos o una tabla.

Para ver el collation del servidor:
select SERVERPROPERTY('collation')

Para ver el collation de la base de datos:
SELECT DATABASEPROPERTYEX('Nombe de BD','Collation')

Para ver el collation de las columnas de una tabla:
exec sp_help 'Nombre de Tabla'

Saludos,

Monica

Escrito por Josem
el 12/03/2007

Muchas gracias Mónica, de forma más rudimentaria y haciendo pruebas vi q si copias una tabla y pegas en el analizador de consultas tb te dice con q collation se ha hecho.

Un saludo

Escrito por Como Actuliza Mi Collactian
el 26/04/2007

Hola y como puedo hacer para actualizar o cambiar el collaction de una tabla ya creada y con datos.

Saludos

Escrito por Yadira
el 28/05/2007

Me sumo a la pregunta.....

Como puedo hacer para actualizar o cambiar el collaction de una tabla ya creada y con datos.

Ya comprobe que mis B. D tienen colletion diferentes,

Saludos

Escrito por Josem
el 29/05/2007

Hola Yadira, desconozco la forma correcta de hacerlo pero te puedo dar una alternativa.

Vete a la base de datos donde están las tablas, botón derecho sobre la q te interesa y le das a copiar.

Vete despues al analizador de consultas, botón derecho pegar.

Ahí verás que collation tiene la tabla, empezará con CREATE TABLE,

Si quieres modificarla es con ALTER TABLE, pones el collation que quieres y así se actualiza. Eso creo. Suerte

Ronald
Perú, Perú
Escrito por Ronald
el 22/05/2008
Gracias Santiago y Monica por la explicacion... Me ayudo a resolver mi pequeño problemas... GRACIAS!
Juan Carlos Salazar
Ingeniería informática universidad cen...
Escrito por Juan Carlos Salazar
el 05/01/2009

Saludos a los autores y pos, de este tema me parece muy interesante les agradezco mucho, tenía el mismo problema pero para no afectar la estructura origen, lo que resolví fué crear una tabla temporal y sobre esta actualizar el campo de la sigueinte manera
ALTER TABLE #TEMP_TABLACLIENTES ALTER COLUMN cli_numerodocumento VARCHAR(10) COLLATE SQL_Latin1_General_CP1_CI_AI NOT NULL

espero que les siva, un excelente año para todos

Escrito por Torres
el 22/05/2009

Hola, el tema de Collation en sql es muy extenso y sobre todo complicado de aplicar cuando ya estan en produccion tanto tus servidores como bases de datos...
Tengo ese problema sobre todo al momento de realizar consultas con datos de diferentes Bases de Datos, asi que les dejo un ejemplo de como hacer una consulta con bases de diferentes collation
Select * From Base1.Dbo.Tabla1 Where ClaveIn ( Select Clave COLLATE Traditional_Spanish_CI_AS From Base1.Dbo.Tabla1 Where Clave ="x" )
De esta forma ESTAMOS "FORZANDO" el collate del campo que necesitamos..

Espero sirva de algo..
saludos...