jueves, 17 de enero de 2008

Vistas SQL SERVER

Un tema que nos suele ocurrir cuando tenemos una aplicación en producción y cambiamos los datos de la tabla a gusto del cliente, es que se nos olvidan que tenemos vistas asociadas a esta tabla, también que tenemos relaciones con otras tablas que sería otra historia. Os adjunto un script sql en el que actualizamos todas las vistas de nuestra base de datos sin necesitar modificar la vista.Es de cir si tenemos una vista select a.* from a innerjoin... al modificar a la vista no refleja ese cambio, o peor nos devuelve un error de conversión de tipos.

Yo adjunto esta forma claro esta cuando no nos acordamos de la vista o cuando queremos actualizar todas. Para una sola esta claro que sólo tendriamos que ejecutar el procedimiento para esa vista.

declare @vista sysname
declare vistas cursor local fast_forward
for
select table_name from information_schema.tables where table_type='VIEW'

open vistas
fetch next from vistas into @vista
while @@fetch_status=0
begin
exec sp_refreshview @vista
fetch next from vistas into @vista
end
close vistas
deallocate vistas
Go

No hay comentarios: