SQL Server - Una Ayuda por favor

   
Vista:

Una Ayuda por favor

Publicado por Carlos Restrepo (61 intervenciones) el 28/11/2007 21:29:38
Ingenieros Buenas Tardes

Mi consulta es la siguiente, estoy tratando de hacer un select entre 2 tablas las cuales estan en diferentes Bases de Datos pero en el mismo servidor, ahora bien ambas tablas tienen un campo en comun, lo que quiero es que me saque los registros que hay en unta tabla que no estan en la otra, pero me sale un error:


SELECT PRO01.dbo.glstgt.GLREF, PRO01.dbo.glstgt.BATCHNO
FROM MTREME01, PRO01.dbo.glstgt
WHERE PRO01.dbo.glstgt.BATCHNO<>MTREME01.caccbatno
GROUP BY MTREME01.caccbatno

El error que me sale es este:
Msg 468, Level 16, State 9, Line 12
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_BIN" in the not equal to operation.

La verdad nos e a que se debe y mucho menos como se corrige, por favor quien sepa como solucionarlo, se lo agradeceria.

De antemano muchas gracias por sus respuestas


Carlos restrepo

crestrepo@quisqueyana.com
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Una Ayuda por favor

Publicado por Isaias (3308 intervenciones) el 29/11/2007 01:46:08
Carlos

Utiliza JOIN en lugar de la codificacion antigua:

SELECT PRO01.dbo.glstgt.GLREF, PRO01.dbo.glstgt.BATCHNO
FROM MTREME01 JOIN PRO01.dbo.glstgt
ON PRO01.dbo.glstgt.BATCHNO SQL_Latin1_General_CP1_CI_AS <> MTREME01.caccbatno Latin1_General_BIN
GROUP BY MTREME01.caccbatno
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Una Ayuda por favor

Publicado por Carlos Ho Continy (3 intervenciones) el 03/12/2007 17:35:20
El problema que tienes es a nivel del collation, en realidad tienes 2 opciones cambiar el collation de todo el servidor o por base de datos, recomiendo la última ya que hacerla a nivel de servidor no es tan fácil y en ocasiones te hace reinstalar MSSQL. OK como cambio el collation a nivel de base de datos? Primero has backup de tu db, luego utiliza el comando ALTER DATABASE MyDatabase COLLATE <desired collation> , donde MyDatabase es el nombre de tu base de datos y <desired collation> es el collation nuevo.

Por que sucede ésto? bueno existen muchos lenguajes a nivel mundial y cada uno soporta un juego diverso de caracteres, la idea es que manejes el mismo juego para tus bases de datos a menos que en un caso en especial necesites un juego especial de caracteres, lo cual hace que tus bases de datos NO sean compatibles. El collation no es más que el juego de caracteres que soportan tus registros, intenta siempre manejar los mismos para todos tus datos, de modo de que exista portabilidad y compatibilidad en especial a la hora en que quieres unir información de diversas bases de datos.

Ok luego de tanta palabrería puedes ver un artículo en http://www.databasejournal.com/features/mssql/article.php/3302341 que te habla más del tema. En realidad solo debes utilizar el Alter Database para cambiar tu collation a nivel de tabla, pero no lo hagas sin antes hacer un backup, para curarte en salud.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias por sus respuestas

Publicado por Carlos Restrepo (61 intervenciones) el 03/12/2007 19:21:37
Ingenieros, muchas gracias por sus amables respuestas, les comento que investigue en einternet y encontre la solucion de la siguiente forma

select CPS, CRECENO
from mtreme01
where (caccbatno IS NULL OR caccbatno='')
AND CPS IN (SELECT SUBSTRING(GLREF COLLATE Latin1_General_BIN,1,5) FROM PRO01.dbo.glstgt)
AND CRECENO IN (SELECT SUBSTRING(GLREF COLLATE Latin1_General_BIN,6,LEN(GLREF)) FROM PRO01.dbo.glstgt)
GROUP BY CPS, CRECENO


ya que solo en esa consulta necesitaba hacer la comparacion de las 2 tablas que estan en diferentes BD.

Carlos Restrepo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar