SQL Server - Error en una BD y en otra no!!!

 
Vista:

Error en una BD y en otra no!!!

Publicado por leon (12 intervenciones) el 30/07/2007 23:46:37
Hola a todos, tengo una consulta en sql2005 que me hace un JOIN entre dos tablas y lista los módulos con los permisos que tiene un rol, y luego lo ordeno por uno de los campos, la consulta es:

-------------------------------------------------------------------------
select nCodigoModulo, sNombre, 0 as nCrear, 0 as nModificar, 0 as nEliminar, 0 as nConsultar
from tbModulos where nCodigoModulo not in (select distinct nCodigoModulo
from tbModulosRole where nCodigoRole= 1 )
union
select m.nCodigoModulo,m.sNombre
,mr.nCrear, mr.nModificar, mr.nEliminar, mr.nConsultar
from tbModulos m inner Join tbModulosRole mr On m.nCodigoModulo=mr.nCodigoModulo
where mr.nCodigoRole= 1
Order By m.nCodigoModulo
-------------------------------------------------------------------------

esta consulta me saca el siguiente error:
-------------------------------------------------------------------------
Mens. 4104, Nivel 16, Estado 1, Línea 1
The multi-part identifier "m.nCodigoModulo" could not be bound.
Mens. 104, Nivel 16, Estado 1, Línea 1
ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.
-------------------------------------------------------------------------

El error se corrige quitando el alias de la tabla en la clausula ORDER ó poniendo un alias al campo, es decir, para el primer caso el ORDER quedaría asi: Order By nCodigoModulo.

El problema está en que yo ejecuto esta consulta en la bd de producción (con el Order By m.nCodigoModulo) y me saca el error que pongo arriba, PERO, ejecuto la misma consulta (con el Order By m.nCodigoModulo) en la bd de pruebas que esta en el mismo servidor y no saca el error.... :(

Si alguien sabe el por que éste error sale en una bd y en otra no se los agradecería demasiado....
PD: las tablas tienen la misma estructura, las mismas relaciones, etc.
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:Error en una BD y en otra no!!!

Publicado por Isaias (3308 intervenciones) el 31/07/2007 01:49:34
Prueba asi:

select nCodigoModulo, sNombre, 0 as nCrear, 0 as nModificar, 0 as nEliminar, 0 as nConsultar
from tbModulos where nCodigoModulo not in (select distinct nCodigoModulo
from tbModulosRole where nCodigoRole= 1 )
union
select m.nCodigoModulo,m.sNombre
,mr.nCrear, mr.nModificar, mr.nEliminar, mr.nConsultar
from tbModulos m inner Join tbModulosRole mr On m.nCodigoModulo=mr.nCodigoModulo
where mr.nCodigoRole= 1
Order By 1
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:Error en una BD y en otra no!!!

Publicado por leon (12 intervenciones) el 31/07/2007 15:05:16
Hola Isaias, el problema para que me listara los registros ya lo solucione quitando el alias de la tabla en el ORDER BY, támbien se puede corregir colocando el índice del campo como tu lo propones y funciona correctamente, mi gran duda es por qué el error aparece en un BD y en la otra no sabiendo que ambas BD tienen la misma estructura, propiedades, relaciones y están en el mismo servidor, no sé cuales podrían ser las posibles causas???

Si me puedes dar pistas para hallar el por qué una consulta puede fallar en una bd y en otra no, te lo agradecería demasiado, ya llevo varios días buscando una respuesta...
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:Error en una BD y en otra no!!!

Publicado por Isaias (3308 intervenciones) el 31/07/2007 20:16:14
En tu analizador de consultas ejecuta:

sp_configure

Revisa el contenido de ambas bases y ve las diferecias en la configuracion.
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:Error en una BD y en otra no!!!

Publicado por leon (12 intervenciones) el 31/07/2007 20:55:18
Hola Isaias, ya ejecute el sp_configure en ambas tablas y compare los valores de los registros, pero son iguales en ambas tablas....
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:Error en una BD y en otra no!!!

Publicado por Isaias (3308 intervenciones) el 01/08/2007 01:49:39
¿Tablas o BASES DE DATOS?
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:Error en una BD y en otra no!!!

Publicado por leon (12 intervenciones) el 01/08/2007 14:59:04
si, que pena, los ejecute en las bases de datos
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:Error en una BD y en otra no!!!

Publicado por Isaias (3308 intervenciones) el 01/08/2007 19:27:08
Ok, veamos, ejecuta SP_HELPDB por cada base de datos, ¿Son iguales en su configuracion o existe alguna diferencia?
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:Error en una BD y en otra no!!!

Publicado por leon (12 intervenciones) el 01/08/2007 21:33:36
ejecute el SP_HELPDB, y en lo único que son diferentes las BD son en la columna compatibility_level, la BD que muestra el error tiene un valor de 90 y la BD que no lo muestra tiene un valor de 80.
Tienen otras dos columnas que son diferentes pero creo que si es normal, las columnas son dbId y created.

PD: ¿la columna compatibility_level qué determina?
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:Error en una BD y en otra no!!!

Publicado por Isaias (3308 intervenciones) el 01/08/2007 23:52:05
Que una base fue creada para SQL SERVER 2000 y la otra para SQL SERVER 2005
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:Error en una BD y en otra no!!!

Publicado por leon (12 intervenciones) el 02/08/2007 22:24:38
mmmm si señor, lo que se hizo fue coger una bd de sql2000 y restaurarla en sql2005 (para la bd que no muestra el error), y para la bd que muestra el error se tomo un bk de sql2005 y restaurarlo allí mismo.... Veo que debe ser por esto que no me muestra el error en una bd y en la otra si.....

seguiré conociendo más acerca de las caracteristicas de las bd al exportarlas de sql2000 a sql2005.

Mil gracias Isaias por tu colaboración, aprendi mucho....
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:Error en una BD y en otra no!!!

Publicado por Isaias (3308 intervenciones) el 03/08/2007 00:15:03
Te sugiero que cambies la compatibilidad de la version de tu base que si te manda el error.
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:Error en una BD y en otra no!!!

Publicado por carlos (2 intervenciones) el 27/04/2010 19:16:16
create database cadena_viveros
go
use cadena_viveros
create table cliente
(
dni varchar(10)primary key,
nombre char(30)not null,
direccion char(30)not null,
telefono integer not null,
fecha_inc datetime
);
create table articulos
(
no_articulo integer primary key
);
create table plantas
(
nombre varchar(30)primary key,
descrip varchar(50)not null
);
create table accesorios
(
tipo char(30)primary key
);
create table productos
(
codigo varchar(15)not null,
precio decimal(6,3)not null,
stock varchar(20)not null,
no_articulo integer foreign key references articulos(no_articulo),
tipo char(30) foreign key references accesorios(tipo),
nombre varchar(30) foreign key references plantas(nombre),
constraint pk_produc primary key(codigo,tipo,no_articulos,nombre)
);


y me marca este error

Mens. 1767, Nivel 16, Estado 0, Línea 1
La clave externa 'FK__historico__codig__0F975522' hace referencia a la tabla no válida 'viveros'.
Mens. 1750, Nivel 16, Estado 0, Línea 1
No se pudo crear la restricción. Consulte los errores anteriores.
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:Error en una BD y en otra no!!!

Publicado por carlos (2 intervenciones) el 27/04/2010 19:19:38
create database cadena_viveros
go
use cadena_viveros
create table cliente
(
dni varchar(10)primary key,
nombre char(30)not null,
direccion char(30)not null,
telefono integer not null,
fecha_inc datetime
);
create table articulos
(
no_articulo integer primary key
);
create table plantas
(
nombre varchar(30)primary key,
descrip varchar(50)not null
);
create table accesorios
(
tipo char(30)primary key
);
create table productos
(
codigo varchar(15)not null,
precio decimal(6,3)not null,
stock varchar(20)not null,
no_articulo integer foreign key references articulos(no_articulo),
tipo char(30) foreign key references accesorios(tipo),
nombre varchar(30) foreign key references plantas(nombre),
constraint pk_produc primary key(codigo,tipo,no_articulos,nombre)
);


y me marca este error

Mens. 1911, Nivel 16, Estado 1, Línea 1
El nombre de columna 'no_articulos' no existe en la vista o tabla de destino.
Mens. 1750, Nivel 16, Estado 0, Línea 1
No se pudo crear la restricción. Consulte los errores anteriores.
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