C#通过AMO对象模型浏览SQL SERVER 2005 SSAS角色一例

A404023573

A404023573

2016-02-19 12:23

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享C#通过AMO对象模型浏览SQL SERVER 2005 SSAS角色一例教程,希望对大家能有一点小小的帮助。

用过SSAS的朋友都使用Visual Studio Business Intelligence Development Studio(BIDS)去创建以及管理所创建的Cube。但是如果只是想查看Cube下的某个角色包含的用户以及权限,我们只能一遍遍的打开BIDS,忍受它的慢动作。更有甚者,如果要比较两个Cube下所有角色及用户是否一致,手工操作更是会让人头大。现在,利用Microsoft提供的AMO对象模型,我们可以很轻松的对Cube进行编程访问,根据自身工作的需求,实在一些有用的工具,以提高工作效率,避免无聊的手工重复劳动。 

Analysis Management Objects (AMO) 是SQL Server SSAS的对象模型库,通过它可以方便的对SSAS里的对象进行访问及控制,包括Cube, DataSource, DataSourceView, Partition, Measure, Dimension, Assembly, Role以及Data Mining对象等。要使用它,必须在机器上找到SSAS的安装路径..Microsoft SQL Server90SDKAssemblies,把目录中的Microsoft.AnalysisServices.Dll文件加载到项目的Reference列表中,AMO对象就是通过这个Dll文件进行访问的。

  需要说明的一点是,AMO对象不能用来获取Cube中的数据,如果想要进行数据查询,则需要使用ADOMD.Net (Microsoft.AnalysisServices.AdomdClient).

下面,我们就简要介绍一下如何利用AMO对象来访问Cube。在把Microsoft.AnalysisServices.Dll加载到项目的引用以后,在代码中我们需要引入命名空间:

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)using Microsoft.AnalysisServices


在此命名空间下,我们首先引入SSAS的Server对象,并建立连接: 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

SSAS的服务器实例建立连接以后,我们要取得它的所有Database对象名称:

String connectstring = Data Source = ServerName;Provider=msolap;
Server ssasServer = New Server();
ssasServere.Connect(connectstring);

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)static public Liststring GetDatabaseCollection()
    {
        Liststring collect = new Liststring();
        foreach (Database db in server.Databases)
        {
            collect.Add(db.Name);
        }
        return collect;         
}

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

请注意,AMO中的Database对象并不是一般意义上的数据库,而是一个容器,可以简单的理解为我们的一个Business Intelligence项目就是一个Database容器,在Database对象内容,包括了BI项目中的所有内容 (Cube, dimension, data mining structure, data source, account, role) 。

接下来,根据所选择的Database来获得它的Cube对象,因为在一个Database下(一个BI项目中),我们可以建立多个Cube,所以在此先取得所有Cube的列表:Cube对象中,我们可以取得CubePermission对象,角色Role就在CubePermission中,从这里就可以获得指定Cube下所有的角色名称列表:

    static public Liststring GetCubeCollection(string databasename)
    {
        Liststring collect = new Liststring();
        database = server.Databases[databasename];
        foreach (Cube cube in database.Cubes)
        {
            collect.Add(cube.Name);
        }
        return collect;
}

 到这里,我们其实就满足了基本需求,可以很轻松地得到Cube下的角色列表,但是不同角色针对Dimension和Attribute其实是拥有不同的访问权限。

static public Liststring GetCubePermission(string cubename)
    {
        Liststring collect = new Liststring();
        cube = database.Cubes[cubename];
        foreach (CubePermission cp in cube.CubePermissions)
        {
            collect.Add(cp.Role.Name);
        }
        return collect;
    }

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

foreach (CubeDimensionPermission dp in cp.DimensionPermissions)
{
  foreach (AttributePermission ap in dp.AttributePermissions)
   {
    Label1.Text = ap.AllowedSet;
    Label2.Text = ap.DeniedSet;
    }
}

利用

CubeDimensionPermission下的AttributePermission对象,我们可以得到当前角色的允许和拒绝的维度属性值,得到了这个值,我们可以直接编程来检查两个Cube中的角色是否一致。

上面只是简单介绍了利用AMO对象进行SSAS服务器对象管理的一个例子,其实大家可以尽情发挥,利用AMO对象实现一些实用的工具来帮忙日常工作中对于SSAS的便捷管理。

附:AMO对象树

展开更多 50%)
分享

猜你喜欢

C#通过AMO对象模型浏览SQL SERVER 2005 SSAS角色一例

编程语言 网络编程
C#通过AMO对象模型浏览SQL SERVER 2005 SSAS角色一例

SQL Server中网络备份一例

编程语言 网络编程
SQL Server中网络备份一例

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

简化SQL语句一例

SQLServer
简化SQL语句一例

WIN2000下使用SQL Server错误一例

SQLServer
WIN2000下使用SQL Server错误一例

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Turbo C作图一例

编程语言 网络编程
Turbo C作图一例

Visual C#的SQL Server编程

C语言教程 C语言函数
Visual C#的SQL Server编程

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

hkcmd.exe进程是什么?

hkcmd.exe进程是什么?

c#连接MySql数据库的两种方法

c#连接MySql数据库的两种方法
下拉加载更多内容 ↓