接上次建立的多维数据集

一、前言

1、运行环境

Windows 2003 Server Enterprise Edition with Service Pack 1

Microsoft SQL Server 2005 with Service Pack 1(包含Analysis Service)

Visual Studio 2005 Team Suite

2、本文使用Microsoft SQL Server 2000下也可使用的ADOMD .NET访问分析服务。

二、目标

查询分析服务数据转换为DataTable形式,在GridView中显示。

三、实现

通过Adomd .NET访问分析服务。通过MDX查询语言查询数据。

1、  同ADO .NET一样,ADOMD .NET也主要有在线数据读取器AdomdDataReader和离线数据集(类似DataSet) CellSet

2、  访问数据的步骤为:建立连接->打开连接->建立AdomdCommand ->得到CellSet->关闭连接->将CellSet转化为DataTable或将数据绑定到对应的饼图等统计图控件

3、  代码片断

l         打开连接,连接到分析服务

public void OpenConnection()

{

if (_connection != null)

if (_connection.State == ConnectionState.Closed)

_connection.Open();

}

l          获得CellSet数据对象

public CellSet ExecuteCellSet(string queryString)

{

OpenConnection();

AdomdCommand command = _connection.CreateCommand();

command.CommandText = queryString;

CellSet cellSet = command.ExecuteCellSet();

CloseConnection();

return cellSet;

}

l          将CellSet数据对象转换为DataTable对象

public DataTable ToDataTable(CellSet cs)

{

DataTable dt = new DataTable();

DataColumn dc = new DataColumn();

DataRow dr = null;

//第一列:必有为维度描述(行头)

dt.Columns.Add(new DataColumn("Description"));

//生成数据列对象

string name;

foreach (Position p in cs.Axes[0].Positions)

{

dc = new DataColumn();

name = "";

foreach (Member m in p.Members)

{

name = name + m.Caption + " ";

}

dc.ColumnName = name;

dt.Columns.Add(dc);

}

//添加行数据

int pos = 0;

foreach (Position py in cs.Axes[1].Positions)

{

dr = dt.NewRow();

//维度描述列数据(行头)

name = "";

foreach (Member m in py.Members)

{

name = name + m.Caption + "\r\n";

}

dr[0] = name;

//数据列

for (int x = 1; x <= cs.Axes[0].Positions.Count; x++)

{

dr[x] = cs[pos++].FormattedValue;

}

dt.Rows.Add(dr);

}

return dt;

}

5、程序调用

BaseComponent.Data.SqlAnalysisService sa

= new SqlAnalysisService("Data Source=localhost;Catalog=LibraryStat");

protected void Page_Load(object sender, EventArgs e)

{

StringBuilder sb=new StringBuilder();

sb.Append("with ");

sb.Append(" set [AllCount] as '[图书分销 订单].[层次结构].[单位].[安徽大学     图书馆].Children'");

sb.Append(" Member [图书分销 订单].[层次结构].[单位].[安徽大学     图书馆].[合计] as 'aggregate([AllCount])'");

sb.Append(" Member [所占订单数百分比] as '[订单数量]/([订单数量],[图书分销 订单].[层次结构].[单位].[安徽大学     图书馆].[合计])',format_string='#.00%'");

sb.Append(" select {[Measures].[订单数量],[Measures].[储运数量],[Measures].[原始数量],[所占订单数百分比]} on columns,");

sb.Append(" {[图书分销 订单].[层次结构].[单位].[安徽大学     图书馆].Children} on rows");

sb.Append(" from [图书馆统计]");

DataTable dt = sa.GetDataTable(sb.ToString());

gv.DataSource = dt;

gv.DataBind();

}

gv为一个GridView对象。除了查询语句不同,数据绑定是一样的,因为已经转换为DataTable了。

四、备注

命名空间:Microsoft.AnalysisServices.AdomdClient

程序集文件:Microsoft.AnalysisServices.AdomdClient.dll(Microsoft SQL Server 2005为9.0版;Microsoft SQL Server 2000为8.0版)

有AdomdClient当然有AdomdServer,分析服务也包含了存储过程和CLR的存储过程。

五、后记

l         理论上本例也可以在Microsoft SQL Server 2000下运行。但是我的同事在WebForm下应用时出现错误。

l         在微软推出Microsoft SQL Server 2005之后,微软又为分析服务提供了多种访问方式。

下次有时间讲讲如何定时从SQL 2005更新数据到分析服务。

转载于:https://www.cnblogs.com/hussar/archive/2006/05/17/402883.html

[原创]C#应用访问Microsoft SQL Server 2005分析服务相关推荐

  1. [转]Microsoft SQL Server 2005 整合、集成SP3方法

    Microsoft SQL Server 2005 SP3 介绍及下载地址: 微软发布了SQL Server 2005 SP3的正式版,而这也将是该软件的最后一次升级服务.SQL Server 200 ...

  2. Microsoft SQL Server 2005 整合、集成SP3方法

    Microsoft SQL Server 2005 SP3 介绍及下载地址: 微软发布了SQL Server 2005 SP3的正式版,而这也将是该软件的最后一次升级服务.SQL Server 200 ...

  3. 建立Microsoft SQL Server 2005数据仓库

    建立Microsoft SQL Server 2005数据仓库 这几天用了一下Microsoft SQL Server 2005的分析服务,贴出来给大家分享一下. 请多多指正.谢谢. 一.需求: 建立 ...

  4. MICROSOFT SQL SERVER 2005 SEPTEMPTER CTP下载

    MICROSOFT SQL SERVER 2005 SEPTEMPTER CTP下载 http://www.microsoft.com/downloads/details.aspx?familyid= ...

  5. Microsoft SQL Server 2005数据库安装

    Microsoft SQL Server 2005数据库,电脑里原有的mssql2000已经不适用了,到网上寻找SQL Server 2005简体中文开发版的下载地址,一开始下载了个学习版的expre ...

  6. Microsoft SQL Server 2005 提供了一些工具来监控数据库

    --WL 09-07-03 /*Microsoft SQL Server 2005 提供了一些工具来监控数据库.方法之一是动态管理视图.动态管理视图 (DMV) 和动态管理函数 (DMF) 返回的服务 ...

  7. Microsoft SQL Server 2005 CTP 简体中文版

    http://go.microsoft.com/fwlink/?LinkId=51817 Microsoft SQL Server 2005 CTP 简体中文版 需要的可以 到这个下载,其他的就不说了 ...

  8. Microsoft SQL server 2005的基本操作

    实验名称:Microsoft SQL server 2005的基本操作 实验需求描述 :通过对Microsoft SQL server 2005功能的熟悉来了解对数据库的管理 试验步骤: 一:配置SQ ...

  9. Microsoft.SQL.Server.2005 (32位) SP2 简体中文企业版

    SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理.SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存 ...

最新文章

  1. maya表情blendshape_Maya的形状融合变形器Blend Shape | 学步园
  2. 干货 | YOLOV5 训练自动驾驶数据集,并转Tensorrt,收藏!
  3. jQuery选择器之可见性过滤选择器
  4. Android -- ViewPager切换动画,PageTransformer
  5. CC攻击介绍及如何防御
  6. JS函数方法Call Apply Bind运用
  7. winform中键盘和鼠标事件的捕捉和重写(转)
  8. JVM核心——JVM运行和类加载全过程
  9. java 中断代码_你的java代码可中断吗?(2)
  10. mysql innodb monitor_MySQL innodb_table_monitor 解析
  11. 【Python爬虫】Beautiful Soup库入门
  12. c语言定义字符数组数码管,数组数码管
  13. 地面波天线怎样能多收台_GPS天线的分类介绍及应用
  14. php env 函数不存在,php-Laravel 5.2无法读取env fi
  15. oracle卸载msvcr71,msvcr71.dll丢失解决方法2则(附msvcr71.dll win7 64位下载)
  16. mysql 多条件求和_技巧|多条件查询求和,你会几种?
  17. python属于什么类型的选修课_河北大学python选修课00次作业
  18. 支付业务与技术架构学习总结(10)——第三方支付账务系统论述
  19. pdfbox pdf转图片,图片长宽大小与pdf保持一致
  20. Windows下访问Ubuntu虚拟机中的Samba服务器遇到“\\192.168.71.128无法访问,您可能没有权限访问网络资源。请与这台服务器的管理员联系以查明您是否有访问权”的问题

热门文章

  1. 复习一个知识点——原、反、补码以及取反操作
  2. JFrame 居中显示
  3. Sublime Text 3 快捷键精华版
  4. windows版本git的下载地址
  5. opencv 实现进度控制
  6. MVC3教程之新手入门(转)
  7. 山西五台警方通报“男子强拽女学生”:嫌疑人被刑拘
  8. setTimeout 定时器的使用
  9. 结对编程作业——四则运算GUI程序
  10. string和json转换的简单应用