sql
編譯與重編譯
1.sp_recompile
使儲存過程和觸發器在下次執行時重新編譯。
2.sp_refreshview
如果檢視所依賴的基礎物件發生更改(如:表增加了乙個字段),則檢視不會自動更新,這時需要呼叫該儲存過程來對檢視進行重新整理。有人說,重新開啟一下檢視就可以更新檢視,但我試了沒有成功。
例1:重新整理指定名稱的檢視
sp_refreshview 'v_tblitem' 例
2:重新整理整個資料庫中的所有檢視
create
procedure [dbo].[_proc_checkview](
@isdelete bit
=0 --
是否要刪除無效的檢視 )
as begin
declare @vname sysname
;declare @errormessage nvarchar
(200);
declare @count int
;set @count=0;
declare @errorcount int
;set @errorcount=0;
create
table #temp(
viewname nvarchar
(776)
)declare refresh_cursor cursor
forselect
name
from sysobjects
where xtype =
'v'and category=0
order
by crdate
forread only
open refresh_cursor
fetch next from refresh_cursor
into @vname
while
@@fetch_status
= 0
begin
begin
tryexec sys.sp_refreshview @vname
endtrybegin
catch
insert
into #temp(viewname)
values
(@vname)
set @errorcount=@errorcount+1 if
(@isdelete=1)
begin
declare @sql nvarchar
(500)
set @sql=
'drop view'
+ @vname
exec
sp_executesql @sql
endendcatch
set @count=@count+1;
fetch next from refresh_cursor
into @vname
endclose refresh_cursor
deallocate refresh_cursor
if(@errorcount>0)
begin
select
'本次共檢查檢視【'+
convert
(nvarchar
(20),@count)+
'】個,其中有【'+
convert
(nvarchar
(20),@errorcount)+
'】個無效,無效檢視參見下表:'
select
*from #temp
endelse
begin
select
'本次共檢查檢視【'+
convert
(nvarchar
(20),@count)+
'】個,全部有效。'
end
drop
table #temp
end go
SQLSERVER編譯與重編譯
編譯的含義 當sqlserver收到任何乙個指令,包括查詢 query 批處理 batch 儲存過程 觸發器 trigger 預編譯指令 prepared statement 和動態sql語句 dynamic sql statement 要完成語法解釋 語句解釋,然後再進行 編譯 compile 生...
SQLSERVER編譯與重編譯
編譯的含義 當sqlserver收到任何乙個指令,包括查詢 query 批處理 batch 儲存過程 觸發器 trigger 預編譯指令 prepared statement 和動態sql語句 dynamic sql statement 要完成語法解釋 語句解釋,然後再進行 編譯 compile 生...
sql server 編譯與重編譯詳解
sqlserver編譯與重編譯 編譯的含義 當sqlserver收到任何乙個指令,包括查詢 query 批處理 batch 儲存過程 觸發器 trigger 預編譯指令 prepared statement 和動態sql語句 dynamic sql statement 要完成語法解釋 語句解釋,然後...