DFC では、メソッドを使用して (DQL をバイパスして) SQL を直接実行できますIDfSession.apiExec()
。問題は、メソッドが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);
これは問題なく動作しますが、既に述べたよう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")
ますが、それによってメソッドが非推奨になるわけではありません。