Problem
Sage Evolution doesn't properly refresh its stored procedures and views after upgrading to V7.10.101
Solution
Just use the scripts below to refresh all views and stored procedures.
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
Related articles