Celdas bloqueadas como Solo Lectura en vistas SQL Server 2005

05/02/2007 - 14:50 por marzak | Informe spam
Hola,

Tengo una BD migrada de SQL Server 2000 a SQL Server 2005 y tengo un
problema al que no encuentro explicación alguna. He de decir que este
problema no ocurría en la versión 2000.

Hago una consulta sencilla de una tabla mostrando todos los campos y
no tengo ningún problema. Pero en cuanto le pongo una tabla auxiliar
con su relación y muestro un campo de ésta, ya la consulta es de sólo
lectura y me impide realizar modificaciones en la tabla principal.
Porqué ocurre esto? En el modo vista del Manager me pone 'Celda de
Sólo Lectura'. Ya digo que este problema no tenía en SQL 2000 ni
tampoco haciendo la consulta desde Access. Estoy muy perdido.
Cualquier ayuda se agradece.

Preguntas similare

Leer las respuestas

#6 Gustavo Larriera (MVP)
05/02/2007 - 20:27 | Informe spam
Pues lo que observas es el comportamiento "por diseño" de SQL Server: Si usas
una vista con varias tablas, no puedes actualizar datos usando la vsita a
menos que alcances solamente columnas de una sola de las tablas base.

En SQL Server 2000 deberás usar triggers INSTEAD OF o hacer vistas
particionadas para lograr hacer actualizaciones en una vsita que involucra
dos o más tablas base.

Si no usas nada de eso, puedes actualizar datos de la vsia pero con varias
limitaciones.

Mira los detalles de CREATE VIEW para SQL Server 2000 acá:

http://msdn2.microsoft.com/en-us/library/aa258253(SQL.80).aspx

... y los detalles para SQL Server 2005 acá:

http://msdn2.microsoft.com/en-us/li...87956.aspx




Gustavo Larriera, MVP
Solid Quality Mentors [www.solidq.com]
Este mensaje se proporciona tal como es, sin garantías de ninguna clase



"" wrote:

Hola,

Gracias por vuestras respuestas.

El error ocurre cuando quiero actualizar una tabla central llamada
Notas utilizando una Select normal que muestra todos los campos de
esta tabla central y que mediante una INNER JOIN normal tiene en
cuenta una o dos tablas auxiliares para hacer un ORDER BY concreto. El
problema surge en el mismo Manager haciendo una Vista normal, pero
también ocurre desde código ASP/Recordset o desde Excel/VBA/Recordset.
Mañana os publico la Select completa. De todas formas, he probado
utilizando otras tablas y me pasa lo mismo. En cuanto hago una Select
con dos tablas, no me deja cambiar datos en ninguna de ellas. Algo
debo tener mal a nivel de Base de Datos en SQL Server 2005, aunque no
le encuentro explicación.

Un saludo.

On 5 feb, 16:50, "Eduardo Castro" wrote:
> Puede que estes tratando de acualizar un vista que contienen información de
> varias tablas, y dentro de la vista no están incluidas las columnas
> necesarias para hacer la actualización. Pon la estructura para poder
> ayudarte.
>
> Slds,
>
> Eduardo Castro - MVP
> Costa Rica wrote in message
>


Respuesta Responder a este mensaje
#7 marzak
06/02/2007 - 09:13 | Informe spam
Gracias por tu respuesta. Miraré los documentos que facilitas.

Os dejo las Select que he probado y que me dan problemas. Las hago en
el Management Studio, en la opción Vistas/Views.

La siguiente no me da problema alguno (es muy sencillita):

SELECT Notas_Estructura.* FROM Notas_Estructura

En cambio, la siguiente modificación (también sencillita), ya me
impide realizar modificaciones en los campos de la tabla anterior:

SELECT Notas_Estructura.*, Alumnos.Apellido1, Alumnos.Apellido2,
Alumnos.Nombre
FROM Notas_Estructura INNER JOIN Alumnos ON Notas_Estructura.CodAlumno
= Alumnos.CodAlumno

Cualquier idea se agradece.
Respuesta Responder a este mensaje
#8 Gustavo Larriera (MVP)
06/02/2007 - 15:55 | Informe spam
Si les atentamente lo que te recomendé en mi mensaje anterior verás que eso
que quieres hacer está prohibido. Ya te indiqué los links donde se explica la
situación y algunas alternativas. Deberías leerlos...

Gustavo Larriera, MVP | Solid Quality Mentors [www.solidq.com]
Este mensaje se proporciona tal como es, sin garantías de ninguna clase



"" wrote:

Gracias por tu respuesta. Miraré los documentos que facilitas.

Os dejo las Select que he probado y que me dan problemas. Las hago en
el Management Studio, en la opción Vistas/Views.

La siguiente no me da problema alguno (es muy sencillita):

SELECT Notas_Estructura.* FROM Notas_Estructura

En cambio, la siguiente modificación (también sencillita), ya me
impide realizar modificaciones en los campos de la tabla anterior:

SELECT Notas_Estructura.*, Alumnos.Apellido1, Alumnos.Apellido2,
Alumnos.Nombre
FROM Notas_Estructura INNER JOIN Alumnos ON Notas_Estructura.CodAlumno
= Alumnos.CodAlumno

Cualquier idea se agradece.



Respuesta Responder a este mensaje
#9 marzak
06/02/2007 - 15:55 | Informe spam
Hola de nuevo:

He podido ver en un Foro exclusivo de SQL Server que por lo visto esto
ocurre porque sí. Vamos, que SQL Server 2005 no soporta actualización
de datos cuando en una consulta hay varias tablas con INNER JOIN. Dan
pistas para solucionar el problema como trasladar los INNER JOIN al
WHERE, pero a mí no me sirve. Así que de momento he modificado el
código para que el recordset que realiza la modificación solo acceda a
la tabla que quiero modificar. Me parece que es una limitación
impuesta por la tecnología .NET de Microsoft. Nunca me ha gustado esta
tecnología, la verdad.

Un saludo.

On 6 feb, 09:13, wrote:
Gracias por tu respuesta. Miraré los documentos que facilitas.

Os dejo las Select que he probado y que me dan problemas. Las hago en
el Management Studio, en la opción Vistas/Views.

La siguiente no me da problema alguno (es muy sencillita):

SELECT Notas_Estructura.* FROM Notas_Estructura

En cambio, la siguiente modificación (también sencillita), ya me
impide realizar modificaciones en los campos de la tabla anterior:

SELECT Notas_Estructura.*, Alumnos.Apellido1, Alumnos.Apellido2,
Alumnos.Nombre
FROM Notas_Estructura INNER JOIN Alumnos ON Notas_Estructura.CodAlumno
= Alumnos.CodAlumno

Cualquier idea se agradece.
Respuesta Responder a este mensaje
#10 Maxi
06/02/2007 - 16:11 | Informe spam
Ojo, no es un problema de SQLServer esto, sino de la aplicacion y como la
estan desarrollando


Saludos

[Microsoft MVP SQL Server]
www.sqlgurus.org
Buenos Aires - Argentina
http://maxiaccotto.blogspot.com/
wrote in message
news:
Hola de nuevo:

He podido ver en un Foro exclusivo de SQL Server que por lo visto esto
ocurre porque sí. Vamos, que SQL Server 2005 no soporta actualización
de datos cuando en una consulta hay varias tablas con INNER JOIN. Dan
pistas para solucionar el problema como trasladar los INNER JOIN al
WHERE, pero a mí no me sirve. Así que de momento he modificado el
código para que el recordset que realiza la modificación solo acceda a
la tabla que quiero modificar. Me parece que es una limitación
impuesta por la tecnología .NET de Microsoft. Nunca me ha gustado esta
tecnología, la verdad.

Un saludo.

On 6 feb, 09:13, wrote:
Gracias por tu respuesta. Miraré los documentos que facilitas.

Os dejo las Select que he probado y que me dan problemas. Las hago en
el Management Studio, en la opción Vistas/Views.

La siguiente no me da problema alguno (es muy sencillita):

SELECT Notas_Estructura.* FROM Notas_Estructura

En cambio, la siguiente modificación (también sencillita), ya me
impide realizar modificaciones en los campos de la tabla anterior:

SELECT Notas_Estructura.*, Alumnos.Apellido1, Alumnos.Apellido2,
Alumnos.Nombre
FROM Notas_Estructura INNER JOIN Alumnos ON Notas_Estructura.CodAlumno
= Alumnos.CodAlumno

Cualquier idea se agradece.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida