DQL requête pour renvoyer tous les fichiers dans un Cabinet en Documentum?
Je veux récupérer tous les fichiers d'un cabinet (appelé "Wombat Insurance Co'). Actuellement, je suis en utilisant cette requête DQL:
select r_object_id, object_name from dm_document(all)
where folder('/Wombat Insurance Co', descend);
C'est ok, sauf qu'elle ne renvoie à un maximum de 100 résultats. Si il y a 5000 fichiers dans le cabinet, je veux obtenir tous les 5000 résultats. Est-il possible d'utiliser la pagination pour obtenir tous les résultats?
J'ai essayé cette requête:
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');
avec l'intention d'obtenir des résultats dans 100 fichier incréments, mais cette requête me donne une erreur lorsque je tente de l'exécuter. L'erreur dit ceci:
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."
Je pense que je suis en utilisant le RETURN_RANGE soupçon correctement, mais peut-être que je ne suis pas. Toute aide serait appréciée!
J'ai aussi essayé d'utiliser le soupçon ENABLE(FETCH_ALL_RESULTS 0)
mais cela ne renvoie à un maximum de 100 résultats.
Pour préciser, ma question est: comment puis-je obtenir tous les fichiers à partir d'un cabinet?
OriginalL'auteur Jason Pather | 2014-01-21
Vous devez vous connecter pour publier un commentaire.
Aha, j'ai pensé à elle. À l'aide de DFS avec Java (une couche d'abstraction sur le dessus de la DFC) vous pouvez définir l'indice de départ pour les résultats de la requête:
Vous pouvez simplement incrémenter le
currentIndex
variable pour obtenir tous les résultats.OriginalL'auteur Jason Pather
Bien, l'indice est être utilisé de manière incorrecte. Commencez avec 1, pas 0.
Il n'y a pas de limite prédéfinie en DQL lui-même. Tous les résultats sont retournés par défaut. La raison pour laquelle vous obtenez seulement 100 résultats doit avoir quelque chose à voir avec la façon dont vous utilisez DFC (ou n'importe quel autre client que vous utilisez). À l'aide de IDfCollection de la façon suivante sera sûrement de retour tout:
Dans un environnement de test (CS 6.7 SP1 x64, MS SQL), ce sorties:
Maintenant, il y a la preuve. En utilisant la pagination est cependant une bonne idée si vous voulez améliorer la performance globale de votre application. Comme mentionné précédemment, commencez à compter le nombre 1:
Cette façon de pagination exige que le tri être spécifié dans l'indicateur plutôt que comme un DQL déclaration. Si tout ce que vous voulez, c'est les 100 premiers enregistrements, essayez cette astuce:
Dans ce cas, le tri avec COMMANDE PAR va travailler comme vous le souhaitez.
Enfin, notez que l'ajout d' (tous) trouverez non seulement tous les documents correspondant à la spécifié de qualification, mais toutes les versions de chaque document. Si c'était votre intention, c'est très bien.
OriginalL'auteur eivamu
Vous avez déjà accepté une réponse qui est à l'aide de DFS.
Depuis votre jouez avec le DFC, ces informations peuvent vous aider.
DFS:
Si vous utilisez DFS, vous devez connaître le nombre de sessions simultanées que vous pouvez consommer avec DFS.
Je pense que c'est 100 ou 150.
DFC:
En fait il y a une limite que vous pouvez le récupérer via la DFC (je ne suis pas sûr qu'avec DFS).
Aller à votre DFC application(webtop ou da ou quoi que ce soit) et de vérifier la dfc.fichier de propriétés.
dfc.properties.full
ou d'un fichier similaire est là et vous pouvez vérifier ces valeurs en fonction de votre système.Et je parle de la ContentServer côté, pas le côté client de la dfc.fichier de propriétés.
Si vous utilisez
ENABLE (RETURN_TOP)
astuce avec la DFC, il y a 2 façons de récupérer les résultats de la ContentServer.Vous devez configurer ce en utilisant le paramètre
return_top_results_row_based
dans le serveur.fichier ini.Tous ces changements pour la documentum côté serveur, pas pour votre DFC/DQL client.
OriginalL'auteur sura2k
J'ai travaillé avec DFC API (avec Java) pour un certain temps mais je ne me souviens pas de limite par défaut sur les requêtes, autant que je me souvienne, nous avons toujours obtenu tous les documents, il n'y avait pas de limite. En fait (d'après mes notes), nous avons à définir la limite explicitement avec, par exemple,
enable (return_top 2000)
. (Que je sache la syntaxe pourrait être dépend du SGBD derrière EMC Documentum.)Juste une supposition: vérifiez votre
dfc.properties
fichier.enable (return_top 2000)
encore retourné à 100 résultats et leproperties
fichier semble être dans l'ordre. J'ai réussi à trouver une solution. Je suis l'aide de DFS (désolé j'aurais du le mentionner dans la question) qui est une couche d'abstraction sur le dessus de la DFC et il s'avère que vous pouvez définir l'indice de départ pour les résultats de la requête.Jamais l'esprit, et merci pour le partage de la solution!
OriginalL'auteur palacsint