透過 Sch-s 禁止修改物件定義

begin tran 

— 一定要有交易,才能呼叫系統預存程序 sys.sp_getschemalock(沒有文件的系統延伸預存程序),否則會有錯誤
/*
訊息 3918,層級 16,狀態 71,程序 sp_getschemalock,行 1
陳述式或函數必須於使用者交易的內容中執行。
*/
    declare @p1 int,@p2 bigint,@p3 int,@p4 bigint

    — 對 table 和預存程序下 sch-s 鎖定
    exec [sys].sp_getschemalock @p1 output,@p2 output,N'[northwind].[dbo].[customers]’
    exec [sys].sp_getschemalock @p3 output,@p4 output,N'[northwind].[dbo].[CustOrderHist]’
   
    select @p1,@p2,@p3,@p4

image
    
    exec [sys].sp_releaseschemalock 1  — 透過 Handle No 在交易中釋放掉先前對 Customers 資料表的 sch-s 鎖定

 

 

 

可以透過另外一條連接來驗證

sp_lock <spid>

image

從 objid 可以驗證是對 CustOrderHist 預存程序的鎖定,雖然 sp_lock 的 type 欄位呈現的是 tab

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: