Sql server rchar(1000),错误行() 插入@ErrorTable(公司ID、ID对象、登录名、模块代码、过程名、时间戳、业务模块、异常类别、异常级别、异常描述) 值(@companyID,NULL,@CREATE_LOGIN_NAME,@CREATED_IN_MODULE,@ProcName,@Current_Timestamp,NULL,'Error','High',@ErrorMessage) 如果@TRANCOUNT>0 回滚事务 端接 ErrorTable的EXEC update_db_log 结束
我不知道你为什么会遇到这个问题。但当我完全按照您的代码进行操作时,我得到了相同的Sql server rchar(1000),错误行() 插入@ErrorTable(公司ID、ID对象、登录名、模块代码、过程名、时间戳、业务模块、异常类别、异常级别、异常描述) 值(@companyID,NULL,@CREATE_LOGIN_NAME,@CREATED_IN_MODULE,@ProcName,@Current_Timestamp,NULL,'Error','High',@ErrorMessage) 如果@TRANCOUNT>0 回滚事务 端接 ErrorTable的EXEC update_db_log 结束,sql-server,transactions,commit,rollback,Sql Server,Transactions,Commit,Rollback,我不知道你为什么会遇到这个问题。但当我完全按照您的代码进行操作时,我得到了相同的事务计数。这是我的密码: 创建表格 CREATE TABLE [dbo].[Test]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [varchar](50) NULL, [IsActive] [bit] NULL CONSTRAINT [DF_Emails_IsActive] DEFAULT ((1)) ) SQL BEGIN TRY B
事务计数。这是我的密码:
创建表格
CREATE TABLE [dbo].[Test](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NULL,
[IsActive] [bit] NULL CONSTRAINT [DF_Emails_IsActive] DEFAULT ((1))
)
SQL
BEGIN TRY
BEGIN TRANSACTION
Print(@@TRANCOUNT)
Print('start')
Print(@@TRANCOUNT)
INSERT INTO Test VALUES ('First')
select 1/0
Print(@@TRANCOUNT)
Print('never reach')
INSERT INTO Test VALUES ('Second')
Print(@@TRANCOUNT)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
Print(@@TRANCOUNT)
Print('catch called')
INSERT INTO Test VALUES ('Third')
Print(@@TRANCOUNT)
Print('inserted')
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
END CATCH
SELECT * FROM Test
回滚之前的语句也被回滚。(在您的情况下,根据我的评论插入@ErrorTable…
)
以下是输出:
1
start
1
(1 row(s) affected)
(0 row(s) affected)
1
catch called
(1 row(s) affected)
1
inserted
(0 row(s) affected)
您的RPM\u PROC\u INSERT\u AUDIT
回滚事务吗?在CATCH
中使用XACT\u STATE()
检查并处理相应的中止和不可模仿的事务。不管怎样,为什么要使用选择1/0
?我想它会将插入回滚到@ErrorTable…
also@lad2025不,没有t@Abhishek实际上,我使用select 1/0作为虚拟异常。但是代码在fe处抛出RTE“执行后的事务计数表明开始和提交的数量不匹配”您是否阅读并检查了以下内容:尝试通过注释EXEC RPM\u PROC\u INSERT\u AUDIT…
1
start
1
(1 row(s) affected)
(0 row(s) affected)
1
catch called
(1 row(s) affected)
1
inserted
(0 row(s) affected)