【发布时间】:2014-04-10 18:24:04
【问题描述】:
在 DFC 中,可以使用 IDfSession.apiExec() 方法直接执行 SQL(绕过 DQL)。问题是该方法在当前(6.x、7.x)版本的 DFC API 中被标记为已弃用。
以下是一些使用已弃用方法的示例代码:
IDfSession session;
(...)
String sql = "UPDATE dm_sysobject_s SET r_modifier = 'hacker' WHERE r_object_id = '<some_id>'";
session.apiExec("execsql", sql);
这很好用,但如前所述,apiExec 已被弃用。
我也尝试了另一种方法:
(...)
IDfQuery query = new DfQuery(sql);
query.execute(session, IDfQuery.DF_EXEC_QUERY);
据我所知,这应该可行,但我不断收到以下消息:
[DM_QUERY_E_REG_TABLE_PERMIT_IN]error: "You have insufficient privilege to UPDATE the dbo.dm_sysobject_s table."
我在使用IDfQuery.DF_QUERY 时收到相同的错误消息,但无论如何 DF_EXEC_QUERY 是应该工作的——或者?我当然是用超级用户帐户尝试这个,所以我不知道我缺少哪些权限。
在 DFC 中执行原始 SQL 语句是否有良好的、不被弃用的方法?
我还想补充一点,我我非常清楚不建议使用原始 SQL,因为它绕过了 Documentum 的安全模型。我也知道我可以在我的 Java 代码中使用@SuppressWarnings("deprecation"),但这并没有减少该方法的弃用。
【问题讨论】:
标签: java documentum dfc