Refresh views
Refresh Views
declare @vwTbl table (viewName varchar(356), ErrorNumber bigint, ErrorSeverity bigint, ErrorState varchar(100),ErrorProcedure varchar(100), ErrorLine bigint, ErrorMessage varchar(800)) --REFRESHING VIEWS: DECLARE @ViewName VARCHAR(256) DECLARE cViews CURSOR READ_ONLY FOR SELECT name from sys.views OPEN cViews FETCH NEXT FROM cViews INTO @ViewName WHILE @@FETCH_STATUS != -1 BEGIN BEGIN TRY EXEC SP_REFRESHVIEW @ViewName PRINT 'View ''' + @ViewName + ''' has been refreshed.' END TRY BEGIN CATCH BEGIN insert into @vwTbl SELECT @ViewName as ViewName ,ERROR_NUMBER() AS ErrorNumber ,ERROR_SEVERITY() AS ErrorSeverity ,ERROR_STATE() AS ErrorState ,ERROR_PROCEDURE() AS ErrorProcedure ,ERROR_LINE() AS ErrorLine ,ERROR_MESSAGE() AS ErrorMessage; END END CATCH FETCH NEXT FROM cViews INTO @ViewName END CLOSE cViews DEALLOCATE cViews select * from @vwTbl GO
Refresh other SQL Objects (Stored Procedures, etc)
Refresh other SQL objects
--REFRESHING OTHER OBJECTS: SET NOCOUNT ON; DECLARE @RowIndex AS SMALLINT = 1 , @ObjectName AS NVARCHAR(128) , @Sql AS NVARCHAR(MAX) -- Get list of objects (stored procedures, functions) to be refreshed DECLARE @ObjectsTable AS Table (RowIndex SMALLINT IDENTITY(1,1), ObjectType nvarchar(60), ObjectName NVARCHAR(128), IsRefreshed BIT, Error NVARCHAR(MAX)) INSERT INTO @ObjectsTable (ObjectType, ObjectName, IsRefreshed) SELECT O.type_desc, SCHEMA_NAME(O.schema_id) + '.' + O.name, 1 FROM sys.sql_modules M INNER JOIN sys.objects O ON O.object_id = M.object_id WHERE O.is_ms_shipped = 0 AND O.type_desc NOT IN ('VIEW') ORDER BY O.type_desc, O.name -- For each function/sp... WHILE @RowIndex <= (SELECT COUNT(*) FROM @ObjectsTable) BEGIN SELECT @ObjectName = ObjectName FROM @ObjectsTable WHERE RowIndex = @RowIndex SET @Sql = 'EXEC sp_refreshsqlmodule ''' + @ObjectName + '''' BEGIN TRY EXEC sp_executesql @Sql END TRY BEGIN CATCH UPDATE @ObjectsTable SET IsRefreshed = 0, Error = ERROR_MESSAGE() WHERE RowIndex = @RowIndex IF @@TRANCOUNT > 0 ROLLBACK TRAN END CATCH -- Process next object SET @RowIndex = @RowIndex + 1 END -- List all objects not refreshed SELECT ObjectType, ObjectName, IsRefreshed, Error FROM @ObjectsTable WHERE IsRefreshed = 0 GO
Related articles
vwTbl