zoukankan      html  css  js  c++  java
  • SQL Server 当前事务无法提交,而且无法支持写入日志文件的操作。

      最近遇到一个向表插入数据时,抛出 “当前事务无法提交,而且无法支持写入日志文件的操作。”的异常, 详细如下;

         此操作只是一个简单的insert操作, 经过排查原因是此表上有对应insert触发器。原因是 里面对应写有try catch,并且将设置了SET XACT_ABORT ON;

        我们知道触发器本事就是一个事务,SET XACT_ABORT ON代表的意思是 程序如果遇到错误就回滚。如果在程序中没有try catch的情况下 就直接回滚了。但是如果有try catch的话,在  try块中出现了错误,被catch捕获以后。Xact_state()就会变成-1 。

        Xact_state()是一个系统函数     

             0表示没有活动事务

             1表示有活动事务并且可以提交

             -1表示有活动事务

        当Xact_state()=-1时存在活动事务,但是无法提交,换句话说就是只能rollback。所以在你提交的时候就会报错“当前事务无法提交,而且无法支持写入日志文件的操作。请回滚该事务。”     

    解决:

           1、 在catch中对Xact_state()的值进行判断如果为-1的话 直接rollback     

           2、 如果在子存储过程中存在try catch的话 最好去掉 让错误往上一级抛出,由上一级做处理

     

  • 相关阅读:
    /usr/bin/ld: 找不到 /usr/lib64/libatomic.so.1.0.0
    linux Version mismatch error. This is libtool 2.4.6 Debian-2.4.6-2
    java播放语音文件
    java冒泡排序
    java递归求和
    常见芯片标号说明
    keil5 新建 stm32项目 步骤
    st-link 升级固件时报错“is not in the DFU mode”
    数码管 段选位选
    C51 定时器
  • 原文地址:https://www.cnblogs.com/VicLiu/p/12892805.html
Copyright © 2011-2022 走看看