1

我正在尝试通过 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 战争来执行升级?

4

1 回答 1

1

好吧,我想通了,以防万一有人需要知道特定的 MS SQL 详细信息...

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

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

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

于 2014-06-11T16:05:37.707 回答