Oi pessoal,
As views do SQL Server precisam se atualizadas se houver alguma mudança nas tabelas em que a view utiliza. Você não precisaria rodar a sp_refreshview se você estiver fazendo alterações em uma view, você deveria executar apenas se alterar alguma tabela usada pela view.
O T-SQL script a seguir pode ser utilizado para atualizar todas as views dentro de um banco de dados:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
--USE YOUR_DBNAME DECLARE views_cursor CURSOR FOR SELECT name FROM sysobjects WHERE type = 'V' OPEN views_cursor DECLARE @view NVARCHAR(500) FETCH NEXT FROM views_cursor INTO @view WHILE @@FETCH_STATUS = 0 BEGIN BEGIN TRY EXEC sp_refreshview @view END TRY BEGIN CATCH PRINT 'VIEW NAME: ' + @view + ', ERROR NUMBER: ' + Cast(ERROR_NUMBER() as VARCHAR) + ', ERROR MESSAGE: ' + ERROR_MESSAGE() END CATCH FETCH NEXT FROM views_cursor INTO @view END CLOSE views_cursor DEALLOCATE views_cursor |
Observe que o script utiliza o cursor para dar um loop em todas as tabelas de um banco de dados, o script também trata possíveis erros dando o nome da view, o numero do erro e a mensagem de erro.
Clique no link a seguir se você quiser saber mais sobre sp_refreshview.
Clique no link a seguir se você quiser saber mais sobre ERROR_NUMBER (Transact-SQL).
Clique no link a seguir se você quiser saber mais sobre ERROR_MESSAGE (Transact-SQL).
Obrigado por ler este post.
Curta e compartilhe se se você gostou!
Gostaria de ver a versão inglesa deste post?
Clique na bandeira inglesa ->