zoukankan      html  css  js  c++  java
  • 曲演杂坛--权限不足引发的错误提示“服务器无法继续执行该事务”

    同事传过来一个存储过程和一个异常信息,让帮忙查找原因

    异常信息:

    com.microsoft.sqlserver.jdbc.SQLServerException: 服务器无法继续执行该事务。说明: bc00000002。
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
        at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(Unknown Source)
        at com.microsoft.sqlserver.jdbc.TDSParser.parse(Unknown Source)
        at com.microsoft.sqlserver.jdbc.TDSParser.parse(Unknown Source)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection$1ConnectionCommand.doExecute(Unknown Source)
        at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectionCommand(Unknown Source)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.rollback(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.ibatis.common.jdbc.SimpleDataSource$SimplePooledConnection.invoke(SimpleDataSource.java:958)
        at $Proxy0.rollback(Unknown Source)
        at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.rollback(JdbcTransaction.java:72)
        at com.ibatis.sqlmap.engine.transaction.TransactionManager.end(TransactionManager.java:105)
        at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.endTransaction(SqlMapExecutorDelegate.java:782)
        at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.endTransaction(SqlMapSessionImpl.java:176)
        at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.endTransaction(SqlMapClientImpl.java:154)
        at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.autoEndTransaction(SqlMapExecutorDelegate.java:883)
        at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:512)
        at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90)
        at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:94)
        at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.update(SqlMapClientImpl.java:71)
        at com.cdel.advc.dao.QuestionStatDao.statUser(QuestionStatDao.java:53)
        at com.cdel.advc.manager.StatQuestionManager.stat(StatQuestionManager.java:36)
        at com.cdel.advc.ReportServer.run(ReportServer.java:36)
        at com.cdel.advc.ReportServer.main(ReportServer.java:62)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
    View Code

    原因分析步骤:

    1. 查看存储过程,排查循环嵌套导致的异常情况

    2. 检查存储过程中锁修改的表,排查触发器导致的异常情况

    3. 检查链接池

    在排查过程中,同事找到了原因,由于在存储过程中使用了truncate,而程序对数据库只有读写权限,因此无法运行truncate语句,导致异常。。。

    一般DBA在排查问题时,都会使用自己拥有的权限而非程序拥有的权限,因此很少会优先考虑权限问题

    至于程序为什么要truncate表 就是其他研究的问题啦

  • 相关阅读:
    iview table的render()函数基本的用法
    【整理】iview Tree数据格式问题,无限递归树处理数据
    【整理】用JSON-server模拟REST API
    【整理】解决vue不相关组件之间的数据传递----vuex的学习笔记,解决报错this.$store.commit is not a function
    【整理】 vue-cli 打包后显示favicon.ico小图标
    【整理】treeGrid 树形表格
    【整理】iview中刷新页面的时候更新导航菜单的active-name
    [整理] webpack+vuecli打包生成资源相对引用路径与背景图片的正确引用
    在.vue文件中让html代码自动补全的方法(支持vscode)
    解决VSCode中使用vetur插件格式化vue文件时,js代码会自动加上冒号和分号
  • 原文地址:https://www.cnblogs.com/TeyGao/p/3610947.html
Copyright © 2011-2022 走看看