当前位置: 首页 > news >正文

曲演杂坛--权限不足引发的错误提示“服务器无法继续执行该事务”

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

异常信息:

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表 就是其他研究的问题啦

 

 

相关文章:

  • Puppet dashboard 安装
  • 微服务理论之二:面向微服务架构与传统架构、SOA对比,以及云化对比
  • typedef用法和与define的区别
  • rsync服务器同步配置参数
  • cacti监控mysql mysql复制
  • Expression Blend制作自定义按钮(转)
  • Android UI学习1:控件和基本事件的响应
  • 使用 git 命令行实现 commit 到 bare 仓库
  • NoSQL反模式 - 文档数据库
  • 说说PHP是什么格式 要怎么打开
  • zookeeper命令大全
  • why is the output of `du` often so different from
  • Oracle 高水位(HWM: High Water Mark) 说明
  • Sql server decimal 和 numeric
  • advapi32.dll kernel32.dll 中的两套注册表API
  • SegmentFault for Android 3.0 发布
  • canvas 五子棋游戏
  • Docker: 容器互访的三种方式
  • ECMAScript6(0):ES6简明参考手册
  • ESLint简单操作
  • interface和setter,getter
  • JS实现简单的MVC模式开发小游戏
  • mockjs让前端开发独立于后端
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Redis中的lru算法实现
  • SpringCloud集成分布式事务LCN (一)
  • 半理解系列--Promise的进化史
  • 电商搜索引擎的架构设计和性能优化
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 复习Javascript专题(四):js中的深浅拷贝
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 前端学习笔记之观察者模式
  • 首页查询功能的一次实现过程
  • 智能合约Solidity教程-事件和日志(一)
  • 《天龙八部3D》Unity技术方案揭秘
  • 1.Ext JS 建立web开发工程
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • # .NET Framework中使用命名管道进行进程间通信
  • #if 1...#endif
  • #Linux(帮助手册)
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (02)vite环境变量配置
  • (52)只出现一次的数字III
  • (C#)获取字符编码的类
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (四)模仿学习-完成后台管理页面查询
  • (算法)前K大的和
  • (五)关系数据库标准语言SQL
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转载)虚函数剖析
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .Net Web项目创建比较不错的参考文章
  • .NET 指南:抽象化实现的基类
  • .NET开发人员必知的八个网站