SQL Server修改表結構後批量更新所有檢視

iSQlServer發表於2010-09-15

最近修改了資料庫表結構,資料同步的時候出了問題,發現很多資料明明已經修改,但是通過檢視篩選出來的還是原來的資料,所以懷疑應該是檢視快取了資料,在園子裡找到下面的博文,在這裡做個記錄備忘。

我們在使用SqlServer時經常遇到這種情況,當修改某個表的結構後,相關的檢視就不對了而導致程式錯誤,因此就有個下面這個儲存過程。

CREATE PROCEDURE RefreshAllView AS
DECLARE MyCursor CURSOR
FOR select Name from dbo.sysobjects where OBJECTPROPERTY(id, N'IsView') = 1 and (not name in ('sysconstraints','syssegments'))

 
DECLARE @name varchar(40)
OPEN MyCursor

FETCH NEXT FROM MyCursor INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
 IF (@@fetch_status <> -2)
 begin
 exec sp_refreshview @name
 end
 FETCH NEXT FROM MyCursor INTO @name
END

CLOSE MyCursor
DEALLOCATE MyCursor

  
   
 
 
  
 
 
 
 
 
 
 
 
  
 
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-673984/,如需轉載,請註明出處,否則將追究法律責任。

相關文章