2
我使用SQL Server的鎖定功能喜歡下面SQL服務器sp_getapplock和sp_releaseapplock拋出異常時釋放鎖
sp_getapplock
sp_releaseapplock
我指定@LockOwner = 'Session'
但每次扔初級講座異常:
com.microsoft.sqlserver.jdbc.SQLServerException:無法釋放應用程序鎖(數據庫主體:'dbo',資源:'89999'),因爲它不是特地舉行
歡迎任何建議或想法!
REGARDS!
CREATE PROCEDURE [SETLOCK]
@...
AS
DECLARE
@RESULT INT;
BEGIN TRANSACTION
EXEC @RESULT = sp_getapplock @...
@LockOwner = 'Session';
IF @RESULT = -3
BEGIN
ROLLBACK TRANSACTION;
END;
ELSE
BEGIN
COMMIT TRANSACTION;
END;
嗨Remus,鎖定釋放必須發生在同一會話......我很抱歉,但再問幾句:如何判斷同一會話?如果在代碼中使用相同的連接對象可以嗎?在使用鎖定或釋放時,我已將相同的連接對象傳遞給方法,但發生此錯誤?非常感謝! – Edward 2013-02-19 08:54:31
同一會話〜=相同@@ SPID。它必須是不能關閉/重新打開的相同連接。 – 2013-02-19 09:00:31
@RemusRusanu沒有'Session'這樣的參數。 – 2016-09-02 12:17:55