Vista que no se refresca

19/05/2009 - 13:41 por dummysql | Informe spam
Hola,

Tengo una tabla con un montón de campos y una serie de vistas que
hacen referencia a ella directamente o "en cascada" (una vista hace
referencia a otra que apunta a la tabla)

La cosa es que cuando añado campos en la tabla, al ejecutar alguna
vista veo que parece como si no se hubiera enterado de las
modificaciones.
Hasta que no borro la vista y la vuelvo a crear no se ve la
información correctamente.

¿A que se debe?

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
19/05/2009 - 14:02 | Informe spam
Tienes puesto SELECT * FROM ..., ¿verdad?. Echa un vistazo al tema
"sp_refreshview" en los BOL

Un saludo
-
www.navento.com
Servicios de Localización GPS

http://blogs.solidq.com/ES/ElRincon...fault.aspx

escribió en el mensaje
news:
Hola,

Tengo una tabla con un montón de campos y una serie de vistas que
hacen referencia a ella directamente o "en cascada" (una vista hace
referencia a otra que apunta a la tabla)

La cosa es que cuando añado campos en la tabla, al ejecutar alguna
vista veo que parece como si no se hubiera enterado de las
modificaciones.
Hasta que no borro la vista y la vuelvo a crear no se ve la
información correctamente.

¿A que se debe?
Respuesta Responder a este mensaje
#2 dummysql
20/05/2009 - 08:49 | Informe spam
On 19 mayo, 14:02, "Carlos Sacristan" wrote:
Tienes puesto SELECT * FROM ..., ¿verdad?. Echa un vistazo al tema
"sp_refreshview" en los BOL

Un saludo
-www.navento.com
Servicios de Localización GPS

http://blogs.solidq.com/ES/ElRincon...fault.aspx

escribió en el mensajenews:
Hola,

Tengo una tabla con un montón de campos y una serie de vistas que
hacen referencia a ella directamente o "en cascada" (una vista hace
referencia a otra que apunta a la tabla)

La cosa es que cuando añado campos en la tabla, al ejecutar alguna
vista veo que parece como si no se hubiera enterado de las
modificaciones.
Hasta que no borro la vista y la vuelvo a crear no se ve la
información correctamente.

¿A que se debe?



Muchísimas gracias Carlos!!

He buscado información, y para los colegas "dummys" pongo un sp para
actualizar los metadatos de todas las vistas de una base de datos:

CREATE procedure dbo.sp_refrescavistas AS

DECLARE @viewName AS VARCHAR(255)

DECLARE listOfViews CURSOR FOR
SELECT [name] FROM sysobjects WHERE xtype = 'V'

OPEN listOfViews

FETCH NEXT FROM listOfViews into @viewName

WHILE (@@FETCH_STATUS <> -1)
BEGIN

FETCH NEXT FROM listOfViews INTO @viewName
EXEC sp_refreshview @viewName

END

CLOSE listOfViews
DEALLOCATE listOfViews
GO
Respuesta Responder a este mensaje
#3 Carlos Sacristan
20/05/2009 - 09:06 | Informe spam
Personalmente creo que es mejor opción seguir unas buenas prácticas (por
ejemplo no poner el *) y/o poner la clásula SCHEMABINDING, aunque siempre
están bien tener a mano scripts como el que has hecho.

Un saludo
-
www.navento.com
Servicios de Localización GPS

http://blogs.solidq.com/ES/ElRincon...fault.aspx

escribió en el mensaje
news:
On 19 mayo, 14:02, "Carlos Sacristan" wrote:
Tienes puesto SELECT * FROM ..., ¿verdad?. Echa un vistazo al tema
"sp_refreshview" en los BOL

Un saludo
-www.navento.com
Servicios de Localización GPS

http://blogs.solidq.com/ES/ElRincon...fault.aspx

escribió en el
mensajenews:
Hola,

Tengo una tabla con un montón de campos y una serie de vistas que
hacen referencia a ella directamente o "en cascada" (una vista hace
referencia a otra que apunta a la tabla)

La cosa es que cuando añado campos en la tabla, al ejecutar alguna
vista veo que parece como si no se hubiera enterado de las
modificaciones.
Hasta que no borro la vista y la vuelvo a crear no se ve la
información correctamente.

¿A que se debe?



Muchísimas gracias Carlos!!

He buscado información, y para los colegas "dummys" pongo un sp para
actualizar los metadatos de todas las vistas de una base de datos:

CREATE procedure dbo.sp_refrescavistas AS

DECLARE @viewName AS VARCHAR(255)

DECLARE listOfViews CURSOR FOR
SELECT [name] FROM sysobjects WHERE xtype = 'V'

OPEN listOfViews

FETCH NEXT FROM listOfViews into @viewName

WHILE (@@FETCH_STATUS <> -1)
BEGIN

FETCH NEXT FROM listOfViews INTO @viewName
EXEC sp_refreshview @viewName

END

CLOSE listOfViews
DEALLOCATE listOfViews
GO
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida