LamponeP Ответов: 1

Список и изменение кубов для каждой роли OALP в C#


Дорогие Все,

Для того чтобы создать новую роль SSAS OLAP из полностью ebracing one, достаточно просто скопировать, а не удалить Кубы superfluos из новой.

Проблема заключается в автоматизации процесса:
1. извлеките список OLAP-кубов, относящихся к определенной роли, прежде чем выделять их
ЧЕМ
2. чтобы удалить выделенные из них


Я нашел кое - что довольно старое, что является просто списком заглушек измерений . У вас есть более полное решение?


Заранее спасибо
НИЗКОЕ ДАВЛЕНИЕ

Что я уже пробовал:

<pre>excerpted from book "A Programmer's Guide to ADO.NET in C#".


Доступ к данным OLAP сервера с помощью ADO .NET[^]

------------------------------

Программирование объектов безопасности AMO - BI | Microsoft Docs[^]

1 Ответов

Рейтинг:
1

Kuthuparakkal

Пожалуйста, попробуйте это...

using oASDatabase = Microsoft.AnalysisServices.Database;//add reference C:\Program Files (x86)\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.AnalysisServices.DLL
using oASCube = Microsoft.AnalysisServices.Cube;


string ASConnectionString = "Data Source=localhost;Initial Catalog=doesntmatter;Provider=MSOLAP.5;Integrated Security=SSPI;Impersonation Level=Impersonate;";
string DatabaseName= "yourcubeCatalogName"
 Microsoft.AnalysisServices.DatabasePermission dbperm; 
Microsoft.AnalysisServices.CubePermission cubeperm; 
using(var ASServer= new Microsoft.AnalysisServices.Server())
{
    ASServer.Connect(ASConnectionString);
    
    using (oASDatabase asdb = ASServer.Databases[DatabaseName]) //Or do foreach like foreach (oASDatabase asdb in ASServer.Databases)
    {
        //get existing roles or search the role you want
        foreach(var role in asdb.Roles)
        {
            //do your stuff
        }
        //create new role

        Microsoft.AnalysisServices.Role myNewRole = asdb.Roles.Add("myNewRole");
        myNewRole.Members.Add(new Microsoft.AnalysisServices.RoleMember("")); // e.g. domain\\user  
        myNewRole.Update();
        dbperm = asdb.DatabasePermissions.Add(myNewRole.ID);
        dbperm.Read = Microsoft.AnalysisServices.ReadAccess.Allowed;
        dbperm.Update();

        //add the role to all cubes in the catalog or assigned specific cube oASCube ascube = asdb.Cubes["MyCubeName"] 
        foreach (oASCube ascube in asdb.Cubes)
        {
            cubeperm = ascube.CubePermissions.Add(myNewRole.ID);
            cubeperm.Read = Microsoft.AnalysisServices.ReadAccess.Allowed;
            //cubeperm.Write = Microsoft.AnalysisServices.WriteAccess.Allowed; 
            cubeperm.Update(); 
        } 
    }

   ASServer.Disconnect();
 }