一、前言 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访问分析服务。 二、目标 三、实现 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.dll(Microsoft SQL Server 2005为9.0版;Microsoft SQL Server 2000为8.0版) 有AdomdClient当然有AdomdServer,分析服务也包含了存储过程和CLR的存储过程。 五、后记 l 在微软推出Microsoft SQL Server 2005之后,微软又为分析服务提供了多种访问方式。 下次有时间讲讲如何定时从SQL 2005更新数据到分析服务。
1、运行环境
查询分析服务数据转换为DataTable形式,在GridView中显示。
通过Adomd .NET访问分析服务。通过MDX查询语言查询数据。
命名空间:Microsoft.AnalysisServices.AdomdClient
l 理论上本例也可以在Microsoft SQL Server 2000下运行。但是我的同事在WebForm下应用时出现错误。
c#应用访问microsoft sql server 2005分析服务_c#应用
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » c#应用访问microsoft sql server 2005分析服务_c#应用
相关推荐
-      利用c#远程存取access数据库_c#应用
-      c# 3.0新特性系列:隐含类型var_c#教程
-      c#动态生成树型结构的web程序设计_c#应用
-      论c#变得越来越臃肿是不可避免的_c#应用
-      用c#监控并显示cpu状态信息_c#应用
-      c#中实现vb中的createobject方法_c#应用
-      photoshop给花瓶打造彩绘效果_photoshop教程
-      使用c#创建sql server的存储过程_c#应用