在DFC中,可以使用该IDfSession.apiExec()方法直接执行SQL(绕过DQL).问题是该方法在DFC API的当前(6.x,7.x)版本中被标记为已弃用.
以下是使用弃用方法的一些示例代码:
IDfSession session;
(...)
String sql = "UPDATE dm_sysobject_s SET r_modifier = 'hacker' WHERE r_object_id = '<some_id>'";
session.apiExec("execsql", sql);
Run Code Online (Sandbox Code Playgroud)
这工作正常,但已经提到过apiExec不推荐使用.
我也尝试了另一种方法:
(...)
IDfQuery query = new DfQuery(sql);
query.execute(session, IDfQuery.DF_EXEC_QUERY);
Run Code Online (Sandbox Code Playgroud)
据我所知,这应该有效,但我不断收到以下信息:
[DM_QUERY_E_REG_TABLE_PERMIT_IN]error: "You have insufficient privilege to UPDATE the dbo.dm_sysobject_s table."
Run Code Online (Sandbox Code Playgroud)
我在使用时收到相同的错误消息IDfQuery.DF_QUERY,但无论如何DF_EXEC_QUERY是应该工作的那个 - 或者?我当然是用超级用户帐户来尝试这个,所以我不知道我缺少哪些权限.
是否有一种好的,不推荐的方式从DFC中执行原始SQL语句?
我还想补充一点,我是非常清楚的原始SQL是强烈反对,因为它绕过的Documentum的安全模型.我也知道我可以@SuppressWarnings("deprecation")在我的Java代码中使用,但这并没有使该方法不再被弃用.
我想从一个文件柜(称为“Wombat Insurance Co”)中检索所有文件。目前我正在使用这个 DQL 查询:
select r_object_id, object_name from dm_document(all)
where folder('/Wombat Insurance Co', descend);
Run Code Online (Sandbox Code Playgroud)
这是可以的,除了它最多只返回 100 个结果。如果文件柜中有 5000 个文件,我想获得所有 5000 个结果。有没有办法使用分页来获得所有结果?
我试过这个查询:
select r_object_id, object_name from dm_document(all)
where folder('/Wombat Insurance Co', descend)
ENABLE (RETURN_RANGE 0 100 'r_object_id DESC');
Run Code Online (Sandbox Code Playgroud)
旨在以 100 个文件为增量获得结果,但是当我尝试执行该查询时,它给了我一个错误。错误是这样说的:
com.emc.documentum.fs.services.core.CoreServiceException: "QUERY" action failed.
java.lang.Exception: [DM_QUERY2_E_UNRECOGNIZED_HINT]error:
"RETURN_RANGE is an unknown hint or is being used incorrectly."
Run Code Online (Sandbox Code Playgroud)
我想我正确地使用了 RETURN_RANGE 提示,但也许我没有。任何帮助,将不胜感激!
我也尝试过使用提示,ENABLE(FETCH_ALL_RESULTS 0)但这仍然最多只返回 100 个结果。
澄清一下,我的问题是:如何从机柜中获取所有文件?
Documentum示例代码从未被深深评论过,所以我的问题是:
这条线是什么意思?
IDfQuery query = DfcUtils.getClientX().getQuery();
Run Code Online (Sandbox Code Playgroud) 我们总是可以通过语法从表中找到一个相应的表属性(select*from table_name),有没有办法反之亦然我的意思是有没有办法找到带有属性名的表名?
我是Documentum DFC的新手,我使用DFC API编写代码来检出文档并且它正常工作.但是现在我想用一个新文件检查同一个文件,该文件存在于我本地的pc驱动器中.我试图搜索它,但没有找到任何好的和简单的答案.
如果有人在这里为我提供指导,我将不胜感激.