Problema de Collation con un SP (2008-11-18)

18/11/2008 - 15:08 por Mauricio | Informe spam
Hola a todos,
tengo un procedimiento almacenado en una base de datos con esta
collation: SQL_Latin1_General_CP1_CI_AS
Al ejecutar el procedimiento almacenado con EXEC
DBO.SubArbolProyectos 14 devuelve un error de este tipo:
Implicit conversion of varchar value to varchar cannot be performed
because the collation of the value is unresolved due to a collation
conflict.
Cuál es la forma más sencilla de solucionar esto? Lo ideal sería
tener un SP que sea independiente de la collation definida para el
motor o la base de datos, se puede hacer esto?
Como dato, me he fijado en los campos de la tabla involucrada y
todos tienen la misma collation, así que no sé muy bien por dónde
buscar.
Cualquier ayuda es bienvenida.
Saludos.

Mauricio
Copenhague, Dinamarca

Preguntas similare

Leer las respuestas

#1 GuilleSQL
18/11/2008 - 15:43 | Informe spam
Hola Mauricio,

Probablemente tengas dentro del procedure alguna consulta que haga un JOIN o
compare dos columnas con intercalación diferente.

La solución rápida, es hacer un "casting" de la intercalación en uno de los
campos de dicha consulta. Ej:

SELECT *
FROM tablaA
INNER JOIN tablaB
ON TablaA.campo = TablaB.campo COLLATE Modern_Spanish_CI_AS

La solución buena, cambiar la intercalación de tu tabla o de tu base de
datos, pero primero habría que ver y analizar qué intercalaciones hay en cada
campo, porqué, etc...

¿Qué es la Intercalación (Collation) en SQL Server? ¿Es posible cambiar la
Intercalación de una base de datos?
http://www.guillesql.es/Articulos/S...ation.aspx

Saludos,

GuilleSQL
http://www.guillesql.es


"Mauricio" wrote:

Hola a todos,
tengo un procedimiento almacenado en una base de datos con esta
collation: SQL_Latin1_General_CP1_CI_AS
Al ejecutar el procedimiento almacenado con EXEC
DBO.SubArbolProyectos 14 devuelve un error de este tipo:
Implicit conversion of varchar value to varchar cannot be performed
because the collation of the value is unresolved due to a collation
conflict.
Cuál es la forma más sencilla de solucionar esto? Lo ideal sería
tener un SP que sea independiente de la collation definida para el
motor o la base de datos, se puede hacer esto?
Como dato, me he fijado en los campos de la tabla involucrada y
todos tienen la misma collation, así que no sé muy bien por dónde
buscar.
Cualquier ayuda es bienvenida.
Saludos.

Mauricio
Copenhague, Dinamarca



Respuesta Responder a este mensaje
#2 Jose TH
18/11/2008 - 15:47 | Informe spam
Como dato, me he fijado en los campos de la tabla involucrada y todos
tienen la misma collation, así que no sé muy bien por dónde buscar.



Pero será la misma collation actual por defecto de la base de datos ?
Respuesta Responder a este mensaje
#3 Mauricio
18/11/2008 - 16:02 | Informe spam
Sí, es la misma.
El SP crea una tabla temporal con dos campos varchar. Opté por
agregarle la COLLATION a esos 2 campos y parece funcionar, pero sigo
con la misma pregunta: hay forma de definir el SP para que sea
independiente? Algo como: COLLATION "LaMismaDeMiBaseDeDatos"? :)

Jose TH a exposé le 18/11/2008 :
Como dato, me he fijado en los campos de la tabla involucrada y todos
tienen la misma collation, así que no sé muy bien por dónde buscar.



Pero será la misma collation actual por defecto de la base de datos ?



Mauricio
Copenhague, Dinamarca
Respuesta Responder a este mensaje
#4 Jose TH
18/11/2008 - 16:16 | Informe spam
Parece que la base de datos (y la tabla involucrada) se creó con una
collation distinta de la actual.

En todo caso esta 'database_default'.




"Mauricio" escribió en el mensaje
news:
Sí, es la misma.
El SP crea una tabla temporal con dos campos varchar. Opté por agregarle
la COLLATION a esos 2 campos y parece funcionar, pero sigo con la misma
pregunta: hay forma de definir el SP para que sea independiente? Algo
como: COLLATION "LaMismaDeMiBaseDeDatos"? :)

Jose TH a exposé le 18/11/2008 :
Como dato, me he fijado en los campos de la tabla involucrada y todos
tienen la misma collation, así que no sé muy bien por dónde buscar.



Pero será la misma collation actual por defecto de la base de datos ?



Mauricio
Copenhague, Dinamarca


Respuesta Responder a este mensaje
#5 GuilleSQL
18/11/2008 - 16:23 | Informe spam
¿Has comprobado la intercalación de los campos de tu tabla temporal?

Cabe el riesgo de que herede la intercalación por defecto de TEMPDB, de tal
modo, que si no coincide con la intercalación del campo con el que estás
cruzando, tendrías que crear la tabla temporal con la intercalación que
desees (explícitamente) o hacer un "casting" en la consulta con la cláusula
COLLATE...
GuilleSQL
http://www.guillesql.es


"Mauricio" wrote:

Sí, es la misma.
El SP crea una tabla temporal con dos campos varchar. Opté por
agregarle la COLLATION a esos 2 campos y parece funcionar, pero sigo
con la misma pregunta: hay forma de definir el SP para que sea
independiente? Algo como: COLLATION "LaMismaDeMiBaseDeDatos"? :)

Jose TH a exposé le 18/11/2008 :
>> Como dato, me he fijado en los campos de la tabla involucrada y todos
>> tienen la misma collation, así que no sé muy bien por dónde buscar.
>
> Pero será la misma collation actual por defecto de la base de datos ?

Mauricio
Copenhague, Dinamarca



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida