sql-server - 如何将 Activiti 部署到 Tomcat 以使用 MSSQL 数据库并在启动时更新架构?

标签 sql-server tomcat activiti mssql-jdbc

我正在尝试通过 MS JDBC sqljdbc4.jar 驱动程序在 MSSQL 2012 中托管 Activiti 数据库。我已经在 J​​Boss 中设置了 Activiti 5.14,受够了,我从 Tomcat 7 中的 5.15.1 开始。所以在部署和启动 activiti-explorer.war 时,它正在尝试升级我的 5.14 activiti 的数据库模式在 MS SQL 中托管的数据库。

升级失败,在Tomcat服务器的catalina.out日志文件中显示错误:

05:10:38,962 [localhost-startStop-1] INFO  org.activiti.engine.impl.db.DbSqlSession  - upgrading activiti engine schema from 5.14 to 5.15.1
05:10:38,962 [localhost-startStop-1] INFO  org.activiti.engine.impl.db.DbSqlSession  - Upgrade needed: 514 -> 515. Looking for schema update resource for component 'engine'
05:10:38,963 [localhost-startStop-1] INFO  org.activiti.engine.impl.db.DbSqlSession  - performing upgrade on engine with resource org/activiti/db/upgrade/activiti.mssql.upgradestep.514.to.515.engine.sql
05:10:38,977 [localhost-startStop-1] ERROR org.activiti.engine.impl.db.DbSqlSession  - problem during schema upgrade, statement alter table ACT_RU_TASK 
add CATEGORY_ nvarchar(255)
com.microsoft.sqlserver.jdbc.SQLServerException: Cannot find the object "ACT_RU_TASK" because it does not exist or you do not have permissions.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)

登录到数据库,我看到了 ACT_RU_TASK 表。

Activiti 数据库用户需要哪些 MS SQL 权限才能执行进程内数据库升级?或者,如何让 Activiti Explorer war 执行升级?

最佳答案

好吧,我想通了,万一有人需要知 Prop 体的 MS SQL 细节...

MS SQL 数据库用户似乎与 Activiti 数据库中的 db_datareaderdb_datawriter 成员相处得很好,如果您已经运行数据库,请在之前手动创建 DDL 脚本第一次启动 Activiti 引擎。

一旦引擎(显然在 activiti-explorer.war 的 activity-engine.jar 依赖项中)决定您需要数据库模式升级,并且已配置为尝试进行此类更改,数据库用户将需要 db_ddladmin 数据库中的成员身份以执行更改。 (将手掌根部涂抹在额头上)。

也许有一种方法可以进一步限制权限,但这似乎比 db_owner 更好。对于生产用途,并考虑到零停机更改程序要求,我可能会关闭自动升级功能。

关于sql-server - 如何将 Activiti 部署到 Tomcat 以使用 MSSQL 数据库并在启动时更新架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24167614/

相关文章:

SQL检测行的变化

java - websphere 比 Tomcat 慢得多的原因是什么

java - 使用Tomcat时如何避免在Eclipse/NetBeans中编写Java代码?

maven - 使用 Maven 集成 Activiti Modeler

c# - 脚本任务填充 : SelectCommand. 连接属性尚未初始化

C# - 创建新的 SQL Server 数据库导致错误

sql - TSQL:提交时触发

angular - ng build --prod 允许缺少原点(404 禁止)

java - 为什么我们需要 ACT_RU_IDENTITYLINK?该表的用途是什么?为什么 ACTIVITI 创建它?

java - 如何从执行监听器读取表单数据