F.A.Q. Business-Objects
F.A.Q. Business-ObjectsConsultez toutes les FAQ
Nombre d'auteurs : 15, nombre de questions : 101, dernière mise à jour : 15 juin 2021
Personnelle :
- En BO V5, elle est stockée dans le dossier LocData, (fichier PDAC).
- Elle est utilisée et/ou modifiée uniquement par l'utilisateur qui l'a créée.
Partagée :
- En BO V5, elle est stockée par défaut dans le dossier ShData, (fichier SDAC).
- Elle est utilisée et/ou modifiée par les utilisateurs qui ont les droits d'accès sur le fichier.
Sécurisée :
- Elle est stockée dans le domaine sécurité du référentiel (V5-6) ou dans le CMS (XI).
- Le superviseur attribue les droits aux utilisateurs sur ces connexions.
- Garantit la sécurité d'accès aux données.
- C'est le seul type de connexion qui autorise l'export d'univers.
Le superviseur peut autoriser les utilisateurs à modifier le SQL avant l'exécution des requêtes.
Que se passerait-il si l'utilisateur décidait de modifier le SQL dans le but d'insérer, de modifier ou de supprimer des données dans la base de données ?
Le message d'erreur suivant apparaîtrait : "Select" est la seule commande SQL autorisée. (QPF0001).
En effet, BusinessObjects n'autorise que la commande SQL SELECT dans l'éditeur de requêtes et interdit les autres commandes telles que INSERT, UPDATE ou DELETE.
Que se passerait-il si l'utilisateur faisait appel, dans le SELECT, à une fonction contenant l'une des instructions DELETE, INSERT ou UPDATE (on suppose que la connexion utilisée dans l'univers permet d'exécuter cette fonction) ?
Dans notre exemple, la base de données utilisée est une base Oracle 9i.
Si l'utilisateur fait appel à une fonction contenant l'une des instructions INSERT, UPDATE ou DELETE alors le message d'erreur suivant apparaît :
Exception: DBD, ORA-14551: cannot perform a DML operation inside a query
ORA-06512: at "GEST_HARPEGE.TEST", line 5
State: N/A
Le message d'erreur affiché n'est pas un message d'erreur propre à BusinessObjects mais un message d'erreur propre au SGBDR Oracle. La même erreur se produirait si la requête était exécutée dans un autre logiciel tel SQLPlus.
- Utiliser dans la connexion de l'univers un utilisateur n'ayant qu'un privilège de lecture dans la base de données. BusinessObjects étant utilisé dans une cadre de restitution, ce privilège est nécessaire mais suffisant.
- Privilégier un SGBD interdisant l'utilisation des instructions DML INSERT, UPDATE et DELETE dans un requête de type SELECT.
Lors de la création d'un univers, il n'est pas possible de pointer sur des tables provenant de plusieurs bases de données différentes. En effet l'univers a une seule connexion qui pointe sur une seule base.
Une technique pour contourner le problème est donc de créer un DBLINK sur la BDD Oracle sur laquelle pointe l'univers, puis de créer une table dérivée pour récupérer les données avec la syntaxe suivante :
SELECT
*
FROM
TABLE
@DBLINK
Le DBLINK sera créé sur la base où pointe l'univers avec le SQL suivant :
Create
database
link DBLINK
connect
to
username identified
by
password
using
'bdddistant'
Où username,password sont les informations de connexion et bdddistant le nom de la base de données distante.