注册

SQL Server的sp_getapplock和sp_releaseapplock怎么改造?

DM_LUO 2024/10/14 378 1

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:Docker
【CPU】:
【问题描述】*:这两个自带的存储过程怎么改造?

USE [master] GO /****** Object: StoredProcedure [sys].[sp_getapplock] Script Date: 2024-10-14 16:13:43 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [sys].[sp_getapplock] --- 1999/04/14 00:00 @Resource nvarchar (255) = NULL, -- Resource to lock @LockMode varchar (32), -- Lock mode @LockOwner varchar (32) = 'Transaction', -- Lock Owner - [D = Transaction] @LockTimeout int = NULL, -- Lock timeout [D = Session setting] @DbPrincipal sysname = N'public' -- DB principal to use for name space and permissions as declare @mode integer declare @owner integer declare @result integer declare @dbid integer select @mode = CASE @LockMode When ('Shared') Then 3 When ('Update') Then 4 When ('Exclusive') Then 5 When ('IntentExclusive') Then 8 When ('IntentShared') Then 6 Else -1 END if @mode = -1 begin raiserror(15625, -1, -1, @LockMode, N'@LockMode') return (-999) end select @owner = CASE @LockOwner When ('Transaction') Then 1 When ('Session') Then 3 Else -1 END if @owner = -1 begin raiserror(15625, -1, -1, @LockOwner, N'@LockOwner') return (-999) end if @LockTimeout is null begin set @LockTimeout = @@LOCK_TIMEOUT end select @dbid = db_id () if @owner = 1 and @@trancount = 0 begin raiserror(15626, -1, -1) return (-999) end exec @result = sys.xp_userlock 0, @dbid, @DbPrincipal, @Resource, @mode, @owner, @LockTimeout return @result
USE [master] GO /****** Object: StoredProcedure [sys].[sp_releaseapplock] Script Date: 2024-10-14 16:06:48 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [sys].[sp_releaseapplock] --- 1999/04/14 00:00 @Resource nvarchar (255) = NULL, -- Resource to unlock @LockOwner varchar (32) = 'Transaction', -- Lock Owner - [D = Transaction] @DbPrincipal sysname = N'public' -- DB principal to use for name space and permissions as declare @owner integer declare @result integer declare @dbid integer select @owner = CASE @LockOwner When ('Transaction') Then 1 When ('Session') Then 3 Else -1 END if @owner = -1 begin raiserror(15625, -1, -1, @LockOwner, N'@LockOwner') return (-999) end select @dbid = db_id () exec @result = sys.xp_userlock 1, @dbid, @DbPrincipal, @Resource, 0, @owner return @result
回答 0
暂无回答
扫一扫
联系客服