繁体   English   中英

通过 C# 代码处理 SSAS 多维数据集

[英]Process SSAS cube through c# code

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

Server server = new Server();
server.Connect(cubeConnectionString);

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

cube.Process(ProcessType.ProcessFull);

但它不起作用。 有人可以帮忙吗??

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

在 C# 中动态处理多维数据集

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

 Server server = new Server();

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

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

 database.Process(ProcessType.ProcessFull);

我知道这个问题已经有几年了,但我最近开发了一个解决方案来做到这一点。 我在尝试自己解决问题时偶然发现了这个问题。

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

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

  • Microsoft.AnalysisServices 和
  • 微软分析服务核心

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

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

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

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

今天,您需要使用 dotnet 4.x,我认为 .Net Core 不会允许您使用这些库(我可能是错的)。 使用 .Net Core 对我来说失败了,抱怨“WindowsImpersonationContext”

最后,以下代码对我有用...

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 ); 

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM