最近定位到一個問題,服務器呼叫存盤程序時,存盤程序開啟了事務,但在事務提交/回滾之前,被服務器判定為超時,主動close掉了連接。
這時資料庫就會有一個空閑行程不會被清理,并鎖住大量資源無法釋放。
經查詢,可以通過呼叫系統存盤程序sp_reset_connection,主動讓資料庫釋放該行程。但是到處沒找到呼叫該存盤程序的方法。
直接執行提示名稱無效。
望大佬告知,其他處理方法也行。
uj5u.com熱心網友回復:
哦哦,想到了,其實可以直接在close之前 select @@spid,然后kill 掉uj5u.com熱心網友回復:
服務器是C++,用的ado.dll,直接在close()之前呼叫exe_command("sp_reset_connection");
后,資料庫無多余空閑執行緒,對應表也沒有被鎖住。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/27981.html
標籤:疑難問題
上一篇:對于一個資料庫表,如何實作根據該表的列值的不同條件,對一個空列設定不同的值呢?
下一篇:沒有
