SQL自動解鎖

2022-09-16 03:12:08 字數 877 閱讀 2675

* 在資料庫系統中,作為任務,每1分鐘執行一次。

** 取消程序的條件:

* 1、鎖住了其他程序。

* 2、自身沒有被其他程序鎖住。

* 3、此程序已經空閒了2分鐘以上。

declare

@user_id int

, @killcmd varchar(100)

, @wait_time int

-- 設定空閒時間

set @wait_time = 2;

-- 根據選擇條件,選擇出應該取消的程序

declare cur_lock cursor for

select spid

from master..sysprocesses

where

datediff(minute, last_batch, getdate()) > @wait_time

and blocked = 0

and spid in

(select blocked

from master..sysprocesses);

-- 取消所有選擇出的程序。

open cur_lock;

fetch next from cur_lock into @user_id;

while @@fetch_status = 0

begin

set @killcmd = 'kill ' + cast(@user_id as varchar);

execute (@killcmd);

fetch next from cur_lock into @user_id;

end;

close cur_lock;

deallocate cur_lock; 

SQL 鎖表 解鎖

鎖表 其它事務不能讀 更新 刪除 begin tran select from 表名 with tablockx waitfor delay 00 00 20 commit tran 鎖表 其它事務只能讀,不能更新 刪除 begin tran select from 表名 with holdlock...

iOS自動解鎖的實現

今天用clang將objective c語言轉換成cpp時,發現乙個對變數的作用域有趣的用法。當我們用 autorelease 時,將轉換為以下形式 已移除無關 int main int argc,const char argv return 0 那麼 atautoreleasepool 是什麼呢?...

Qt QMutexLocker 自動解鎖的機制

qmutexlocker 是乙個便利類,它可以自動對qmutex加鎖與解鎖。因為qmutexlocker 申請的這個lock變數在這個函式退出時,自動的呼叫析構函式來解鎖。這樣可以防止在程式編寫的過程中,不同的地方有多個return的情況,在發生return的時候,沒有解鎖,導致程式死鎖。下面是乙個...