我正在尝试通过 MS JDBC sqljdbc4.jar 驱动程序在 MSSQL 2012 中托管 Activiti 数据库。我已经在 JBoss 中设置了 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_datareader
和 db_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/