手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >通过AMO获取SQL Server SSAS信息
通过AMO获取SQL Server SSAS信息
摘要:AnalysisManagementObjects(AMO)是SQLServerSSAS的对象模型库,通过它可以方便的对SSAS里的对象进行...

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

首先要添加引用using Microsoft.AnalysisServices;

以下是测试用C#从SSAS中获取部分信息的源码:(代码中已经包含了较多的解释)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using Microsoft.AnalysisServices;

namespace AMOTest

{

class Program

{

static void Main(string[] args)

{

string ConnecteString = "Data Source =ServerName; Provider=msolap";

Server SSASServer = new Server();

SSASServer.Connect(ConnecteString);

List OutDatabase = GetDatabaseCollection(SSASServer);

//show all database on the server

Console.WriteLine("-------------Databse-------------------------------");

for (int i = 0; i < OutDatabase.Count; i++)

{

Console.WriteLine(OutDatabase[i].Name.ToString());

}

//show the Cube of a database

Console.WriteLine("---------------Cube--------------------------------");

List OutCube = GetCubeCollection(OutDatabase[0]);

for (int i = 0; i < OutCube.Count; i++)

{

Console.WriteLine(OutCube[i].Name.ToString());

}

//show all Roles of one database

Console.WriteLine("---------------Roles_database-------------------------");

List OutRole = GetRolescollection(OutDatabase[0]);

Console.WriteLine(OutRole[0].Members.Count);

//for (int i = 0; i < OutRole[0].Members.Count; i++) //to show the detial of the role Members

//{

// Console.WriteLine(OutRole[0].Members[i].Name);

//}

//show all Roles of one cube

Console.WriteLine("---------------Roles_Cube----------------------------");

List OutRole2 = GetRolescollection2(OutCube[0]);

Console.WriteLine(OutRole2[0].Members.Count);

//for (int i = 0; i < OutRole2[0].Members.Count; i++)

//{

// Console.WriteLine(OutRole2[0].Members[i].Name); //to show the detial of the role Members

//}

Console.Read();

}

//get the list of the database name

static public List GetDatabaseCollection(Server server)

{

List collectdb = new List();

foreach (Database db in server.Databases)

{

collectdb.Add(db);

}

return collectdb;

}

//get the list of a database cube name

static public List GetCubeCollection(Database db)

{

List collectcube = new List();

foreach (Cube cube in db.Cubes)

{

collectcube.Add(cube);

}

return collectcube;

}

//get the list of the database roles

static public List GetRolescollection(Database db)

{

List collectRoles = new List();

foreach (Role cp in db.Roles)

{

collectRoles.Add(cp);

}

return collectRoles;

}

//get the list of the cube Roles

static public List GetRolescollection2(Cube cube)

{

List collectionRoles = new List();

foreach (CubePermission cp in cube.CubePermissions)

{

collectionRoles.Add(cp.Role);

}

return collectionRoles;

}

}

}

这里需要说明的是,当我获取Database的Roles和Cube的Roles值时,做了一个对比,他们的值是相同的。这可能的情况是,在Database中Cube只有一个,或者因为Cube隶属于database,他们的Roles值是相同的。

如下是运行完的截图:

通过AMO获取SQL Server SSAS信息 三联

【通过AMO获取SQL Server SSAS信息】相关文章:

在SQL Server中将数据导出为XML和Json的方法

MDF文件在SQL Server中的恢复技术

Sql Server中的事务介绍

Microsoft SQL Server 2008 基本安装说明

Eclipse 连接 SQL Server 2012数据库

SQL Server2005 异地备份的多种方法

显示 Sql Server 中所有表中的信息

SQLServer EVENTDATA()函数来获取DDL 触发器信息

如何创建SQL Server 2000故障转移群集

SQL Server 2005 还原数据库错误解决方法

精品推荐
分类导航