簡體   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