Bonjour à tous,

Je dois mettre en place sur un cube SSAS MSSQL 2012 un système de sécurité dynamique qui donne accès selon l'utilisateur connecté à certaines dimensións qui ont un lien hierarchique entre elles.


j'ai construit une vue qui contient les diferentes combinaisons d'acces autorisees ( c'est ma bridge table), et jái une table d'utilisateurs:
voici les colonnes de ces deux tables:

Table utilisateurs:
ID_USER, USERNAME
(USERNAME contient en fait le login de l'utilisateur)

Vue pour les autorisations:
ID_USER, ID_COMPTE, ID_GROUPE, ID_PAYS

Un compte peut contenir plusieurs groupes, et chaque groupe est presents dans plusieurs pays.

une ligne de cette vue peut etre:

ID_USER | ID_COMPTE | ID_GROUPE | ID_PAYS
1 | 25 | 12 | 2
1 | 25 | 11 | 2
ce qui veut dire avec juste ces deux lignes que l'utilisateur 1 ne doit pouvoir voir que les donnees relatives au pays 2 , seulement des groupes 11 et 12 du compte 25.

Tous les tuto que j'ai vu sur le net montrent comment utiliser ce type de securite en donnant acces seulement a une dimensión. donc par exemple ici une table bridge avec seulement un ID_USER et un ID_COMPTE. (j'ai essaye ca marche tres bien)

Je ne sais pas comment m'y prendre et je ne suis pas expert en MDX d'où mon post ici.
actuellent j'ai trois requetés MDX , une sur chaque dimensión.
la logique de chaque requeté est la meme pour chaque dimensión:

nonempty
(
[Group].[Group Hiierarchy].[Level 02].members,
([Measures].[VW SECURITY Count],strtomember("[User].[User name].[" + username + "]"))
)


nonempty
(
[Country].[Country code 2].[Country code 2].members,
([Measures].[VW SECURITY Count],strtomember("[User].[User name].[" + username + "]"))
)


nonempty
(
[Account].[Account name].[Account Name].members,
([Measures].[VW SECURITY Count],strtomember("[User].[User name].[" + username + "]"))
)


Bien sur ca ne marche pas parce que si un pays est present dans la liste d'autorisations et appartient aussi a un autre groupe, il va etre affiché pour cet autre groupe alors qu'il ne devrait pas...
j'espere que mes expliquations sont claires, qu'en pensez vous ? est ce posible de faire ca comme ? est ce juste une question de mdx ou la methode ne va pas ?

en vous remerciant, le mdx me fait un peu mal a la tete !