Esta vez haré un post mas corto de lo habitual. Ayer a un colega se le presentó una situación, que por un cambio en varias cosas de su motor debía recompilar una vista. Esto es facil utilizando
EXEC SP_REFRESHVIEW [miVista];
El problema es que ocurre cuando en lugar de una vista son cientas y potencialmente divididas en varias bases de datos. La solución que le brindé es un TSQL que le generase un script con todos los refresh para que despues pueda ejecutarlo y guardarlo como documentación. Para esto me valí de un procedimiento no documentado del sql que es el sp_MSforeachdb.
Les comparto como quedó el script final
-- ============================================= -- Create: Andrés Aiello -- Create date: 09/11/11 -- Description: Como recompilar todas las vistas -- ============================================= sp_MSforeachdb ' SELECT ''USE [?] GO EXEC SP_REFRESHVIEW [''+NAME+'']; GO'' FROM SYSOBJECTS WHERE TYPE = ''V'' AND NOT ''?'' IN (''master'', ''tempdb'', ''msdb'', ''model''); 'More: http://msdn.microsoft.com/en-us/library/ms187821.aspx
No hay comentarios:
Publicar un comentario