我想使用SSAS多维数据集从Dynamics AX获取数据并将数据传递给wpf Devexpress PivotGrid。 我在AX中使用以下顺序来创建立方体: 透视 - >查看 - >查询(带参数) 现在当我每次更改查询的参数时,我必须手动处理多维数据集并呈现数据。 我希望通过c#代码自动完成该过程。 我试过下面的代码
Server server = new Server();
server.Connect(cubeConnectionString);
Database database = server.Databases.FindByName(databaseName);
Cube cube = database.Cubes.FindByName(cubeName);
cube.Process(ProcessType.ProcessFull);
但它不起作用。 任何人都可以帮忙??
答案 0 :(得分:2)
我不知道你得到的错误是什么。要从C#处理多维数据集,您使用的代码似乎是正确的,但您可能错过了连接字符串中的某些内容。如需参考,您可以下载此链接中提供的示例项目。
Process Cube dynamically in 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);
答案 1 :(得分:0)
我知道这个问题已有几年历史了,但是我最近开发了一个解决方案。尝试自己解决问题时,我偶然发现了这个问题。
首先,检查您的权限,看看是否可以通过SSMS处理它,但是我想您已经完成了。
第二个是使用正确的库。您应该使用的两个库是:
对我来说,我都使用了14.x版本,每个dll需要具有相同的版本号
您创建的Server对象实际上是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处的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 );
}