-- Back Up All Databases
-- by Bryan Valencia
--create temp table
declare @temp table(commands varchar(500), completed bit)
--load it with backup commands
insert into @temp (commands, completed)
(
SELECT DISTINCT 'EXEC sp_refreshview ''' + name + '''',0
FROM sys.objects AS so
INNER JOIN sys.sql_expression_dependencies AS sed
ON so.object_id = sed.referencing_id
WHERE so.type = 'V'
and is_schema_bound_reference = 0
)
--variable for the current command
declare @thisCommand varchar(500);
--loop through the table
while (select count(1) from @temp where completed=0)>0
begin
--find the first row that has not already been executed
select top 1 @thisCommand = commands from @temp where completed=0
--show the command in the "mesage" output window.
print @thisCommand
--execute the command
EXEC (@thisCommand);
--flag this row as completed.
update @temp set completed=1 where commands=@thisCommand
end
--show the user the rows that have been found.
select * from @temp
Of course if a view is now no longer correct, you'll see on your messages tab in SQL Server Management Studio.
...
Bryan Valencia is a contributing editor and founder of Visual Studio Journey. He owns and operates Software Services, a web design and hosting company in Manteca, California.
No comments:
Post a Comment