Recompilar objetos en el SQL Server


Seguramente os ha ocurrido que al realizar un ALTER de una VIEW que otras vistas han causado un error al ejecutarse en el SQL Server.

	Msg 4502, Level 16, State 1, Procedure VW_LastVersion, Line 5
	View or function 'dbo.VW_PublicVersion' has more column names specified than columns defined.

El problema ocurre debido a que el SQL Server no ha recompilado los objetos dependientes que utilizan la vista actualizada. Para evitar la problemáticas hemos de ejecutar el siguiente script que fuerza la compilación de todos los objetos de la base de datos.

-- Recompilar Procedures, Vistas y Funciones
DECLARE RecompileAll CURSOR
FOR
    SELECT [name]
    FROM sysobjects
    WHERE xtype in ('p', 'v', 'fn')

OPEN RecompileAll
DECLARE @name VARCHAR(250)

FETCH NEXT FROM RecompileAll INTO @name
WHILE @@fetch_status = 0
BEGIN

    EXEC sp_recompile @name

    FETCH NEXT FROM RecompileAll INTO @name
END
CLOSE RecompileAll
DEALLOCATE RecompileAll
Anuncios
Esta entrada fue publicada en Sql Server y etiquetada , , . Guarda el enlace permanente.

Una respuesta a Recompilar objetos en el SQL Server

  1. Ferran y Rodrigo dijo:

    Si tenemos vistas tienen dependencias sobre vistas; deberíamos ejecutar este script en varias ocasiones. Tantas como niveles de dependencias.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s