首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过c#代码处理SSAS多维数据集

问通过c#代码处理SSAS多维数据集
EN

Stack Overflow用户
提问于 2014-07-04 21:33:30
回答 2查看 4.2K关注 0票数 0

我想使用SSAS多维数据集从Dynamics AX获取数据,并将数据传递到wpf Devexpress PivotGrid。我在AX中使用以下顺序来创建多维数据集:透视图-->视图-->查询(带参数)现在,每当我必须手动处理多维数据集并呈现数据时,我都会更改查询的参数。我希望这个过程通过c#代码自动完成。我试过下面的代码

代码语言:javascript
复制
Server server = new Server();
server.Connect(cubeConnectionString);

Database database = server.Databases.FindByName(databaseName);
Cube cube = database.Cubes.FindByName(cubeName);

cube.Process(ProcessType.ProcessFull);

但它不起作用。有人能帮上忙吗?

EN

回答 2

Stack Overflow用户

发布于 2014-07-08 12:43:04

我不知道你得到的错误是什么。要处理来自C#的多维数据集,您使用的代码似乎是正确的,但您可能遗漏了连接字符串中的某些内容。作为参考,你可以下载这个链接中提供的示例项目到我的博客:

Process Cube dynamically in C#

我用来处理我的多维数据集数据库的代码如下……

代码语言:javascript
复制
 Server server = new Server();

 server.Connect("Data source=YourSSASServerName;Timeout=7200000;Integrated Security=SSPI");

 Database database = server.Databases.FindByName("YourCubeDBName");

 database.Process(ProcessType.ProcessFull);
票数 2
EN

Stack Overflow用户

发布于 2020-03-04 12:17:31

我知道这个问题已经有几年的历史了,但我最近开发了一个解决方案来解决这个问题。当我试图自己解决这个问题时,我偶然发现了这个问题。

首先,检查您的权限,看看您是否可以通过SSMS处理它,但我假设您已经这样做了。

第二个是使用正确的库。您应该使用的两个库是:

  • Microsoft.AnalysisServices和
  • Microsoft.AnalysisServices.Core

对于我来说,我使用了这两个版本的14.x,并且每个dll都需要具有相同的版本号

您创建的服务器对象实际上是Microsoft.AnalysisServices.Server,该类需要Microsoft.AnalysisServices.Core.Server请参见https://docs.microsoft.com/en-us/dotnet/api/microsoft.analysisservices.server?view=analysisservices-dotnet

https://docs.microsoft.com/en-us/dotnet/api/microsoft.analysisservices?view=analysisservices-dotnet的文档也强调了使用这两个库的必要性。

Microsoft.AnalysisServices.Core.Server是一个抽象类,所以您无法实例化它,这就是您使用Microsoft.AnalysisServices.Server的原因。请参阅https://docs.microsoft.com/en-us/dotnet/api/microsoft.analysisservices.core.server?view=analysisservices-dotnet

今天,你需要使用dotnet4.x,我不认为.Net核心会允许你使用这些库(我可能错了)。我使用.Net内核失败,抱怨'WindowsImpersonationContext‘

最后,下面的代码对我有效...

代码语言:javascript
复制
using Microsoft.AnalysisServices;
using Microsoft.AnalysisServices.Core;

void Main()
{

Microsoft.AnalysisServices.Server server = new Microsoft.AnalysisServices.Server();

server.Connect("servername") ;

Microsoft.AnalysisServices.Database db = server.Databases.FindByName("SSAS_DBName");

Microsoft.AnalysisServices.Cube cube = db.Cubes.FindByName("CubeName");

cube.Process( ProcessType.ProcessFull ); 

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24575563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档