刷新SqlServer所有視圖元數據的存儲過程

摘自: http://www.cnblogs.com/yashen/archive/2004/12/23/81000.html

我們在使用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
複製代碼

 

執行存儲過程:

Exec RefreshAllView

 

------------------------------

把以上代碼做一個整合

複製代碼
if exists(SELECT * FROM sysobjects where ID = OBJECT_ID('RefreshAllView') and xtype='p' ) 
    drop proc RefreshAllView
go


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




go

Exec RefreshAllView
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章