我有一个存储过程,其中我没有使用任何明确的事务相关代码(即开始/回滚/提交事务),但@@Trancount
设置为2
(我通过在存储期间将此值写入表的行条目来监控这一点程序)。这显然意味着那IMPLICIT_TRANSACTIONS
是设置在ON
某个地方。
我将以下行添加到我的存储过程的开头......
SET IMPLICIT_TRANSACTIONS OFF
GO
....所以它变成了这样:
USE [RentTrackingSystem]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET IMPLICIT_TRANSACTIONS OFF
GO
ALTER PROCEDURE [RTS].[GenerateAnnualPenalty]
-- Add the parameters for the stored procedure here
@dueDate Date = NULL ,
@fiscalYear numeric(4),
@createdBy Varchar(50),
@referenceForm Varchar(50),
@referenceFormNo Varchar(50),
@PENALTY_NO int ,
@PenaltyCutOffDate date = NULL
AS
-- Rest of the body here ..
但是,当我执行查询(以更改存储过程)时,关闭该窗口,然后再次打开相同的存储过程的代码,该添加消失,存储过程再次变为:
USE [RentTrackingSystem]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [RTS].[GenerateAnnualPenalty]
-- Add the parameters for the stored procedure here
@dueDate Date = NULL ,
@fiscalYear numeric(4),
@createdBy Varchar(50),
@referenceForm Varchar(50),
@referenceFormNo Varchar(50),
@PENALTY_NO int ,
@PenaltyCutOffDate date = NULL
AS
-- Rest of the body here ..
那么这里发生了什么?