2017-07-17 57 views
-1

我已經爲具有SSIS包的數據倉庫創建了ETL設置。 一切正常,直到最後一個步驟,是一個「Analysis Services處理任務編輯器」找不到方法:Microsoft.AnalysisServices

每當我加我的立方體,然後按OK我收到以下錯誤:

"Method not found: "'Void Microsoft.AnalysisServices.Commands.ProcessCommand.set_Type(Microsoft.AnalysisServices.ProcessType)'.

我懷疑有一些問題與DLL,但我不知道哪個。 我在我的SQL Server安裝(C:\ Program Files文件(x86)\ Microsoft SQL Server \ 120 \ SDK \ Assemblies)下找到了Microsoft.AnalysisServices.dll 我沒有在我的Visual Studio安裝文件夾中找到它。

+0

的DLL可能需要在GAC存在。你能告訴我們你正在使用什麼版本的SSIS/SSDT和SQL嗎? –

+0

SQL Server 2016 SSDT 14.0.61705.170 SSIS 14.0.600.250 – VegardKT

+0

更新了我的答案,還有一件事要嘗試。 –

回答

0

This MS論壇帖子有以下建議。

如果存在,請將以下文件夾從GAC剪切並粘貼到其他位置。

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.AnalysisServices.DeploymentEngine

然後,重建項目。

  1. 右鍵單擊該項目

  2. 單擊屬性

  3. 展開配置屬性 - >選擇部署

  4. 在目標服務器上:輸入\ < SSAS Instace名稱>(使確定SSAS服務器是多維SSAS實例)

  5. 點擊申請

  6. 保存項目。重新啓動IDE(SSDT)

  7. 啓動SSDT - >選擇項目 - >和重建解決方案\重建項目。

  8. 再次測試。

+0

謝謝特洛伊,我在部署配置中檢查了目標服務器,並將它設置爲正確的服務器。 我該如何驗證DLL是否存在於GAC中?編輯:我假設你是指這裏? C:\ WINDOWS \ Microsoft.NET \組裝。 我能夠找到C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ Microsoft.AnalysisServices.Core,如果我沒有錯,Microsoft.AnalysisServices.ProcessType是其中的一部分。 – VegardKT

0

我們有同樣的問題。

一件有趣的事情是:您可以嘗試將項目兼容性切換到SQL Server vNext,然後正常創建您的處理任務,成功點擊OK和其他東西(這是一個奇蹟!),然後切換回所需的版本並部署。

但是,如果您在同一個包中包含腳本任務 - 那麼您可以嘗試其他解決方法(我現在實際使用該解決方案)。使用腳本任務爲「Analysis Services執行DDL任務」填充變量(在我的示例中爲User :: DimensionsProcessingCommand)。這是複雜的方式,但在未來非常有用。

public void Main() 
    { 
     Boolean tstFire = false; 
     Microsoft.AnalysisServices.Server myServer = new Microsoft.AnalysisServices.Server(); 
     //Get connection to SSAS database from package 
     ConnectionManager myConn = Dts.Connections["SSAS"]; 
     //Template for future use 
     String ProcessingCommandTemplate = "<Batch xmlns=\"http://schemas.microsoft.com/analysisservices/2003/engine\"><Parallel>XXXXXXX</Parallel></Batch>"; 
     String myProcessingCommand = ""; 
     //Array for gathering dimensions w/o duplicates 
     Dictionary<Dimension, Cube> amoDimDictionary = new Dictionary<Dimension, Cube>(); 

     String myServerName = myConn.ConnectionString; 
     String myDatabaseName = myConn.Properties["InitialCatalog"].GetValue(myConn).ToString(); 
     //Connect to SSAS server instance 
     myServer.Connect(myServerName); 

     Database amoDb = myServer.Databases.FindByName(myDatabaseName); 

     //Get all dimensions used in cubes 
     foreach (Cube amoCube in amoDb.Cubes) 
     { 
       foreach (CubeDimension amoDimension in amoCube.Dimensions) 
      { 
       if (!amoDimDictionary.ContainsKey(amoDimension.Dimension)) 
       { 
        amoDimDictionary.Add(amoDimension.Dimension, amoCube); 
       } 
      } 
     } 

     //Start XML capture Dimensions 
     myServer.CaptureXml = true; 
     foreach (Dimension amoDimension in amoDimDictionary.Keys) 
     { 
      if (amoDimension.State == AnalysisState.Unprocessed) 
      { 
       amoDimension.Process(ProcessType.ProcessFull); 
      } 
      else 
      { 
       amoDimension.Process(ProcessType.ProcessUpdate); 
      } 
     } 
     myServer.CaptureXml = false; 

     //Build command 
     foreach (String strXML in myServer.CaptureLog) 
     { 
      myProcessingCommand = myProcessingCommand + strXML.ToString(); 
     } 

     myProcessingCommand = ProcessingCommandTemplate.Replace("XXXXXXX", myProcessingCommand); 
     Dts.Variables["User::DimensionsProcessingCommand"].Value = myProcessingCommand.ToString(); 
     //Command output to see at runtime from VS 2015 
     Dts.Events.FireInformation(1, "", Dts.Variables["User::DimensionsProcessingCommand"].Value.ToString(), "", 0, ref tstFire); 

P.S. 我們的DEV機器從零開始安裝:SQL Server 2016,Visual Studio 2015,SSDT 17.1 當我們試圖在SQL Server 2016兼容性下開發一些SSIS包時 - 我們偶然發現了很多問題......所以我們只是停止計數他們。GAC在谷歌搜索和調整中沒有任何結果。 14.0微軟DEV環境看起來如此錯誤,並且......如果你嘗試在13.0及更低版本中創建某些東西,那麼它就會破壞。

+0

謝謝帕維爾!如果一切都失敗了,我會把它作爲備份解決方案放在後面的口袋裏。 – VegardKT

1

我能找到解決方法。

我試圖重現與AdventureWorks數據集的問題,以驗證問題是由於.dll而不是我的多維數據集或其他任何事情發生。

所以我從AdventureWorks數據集創建了一個新的OLTP & DWH與Cube,並創建了一個新的SSIS項目,其中唯一的步驟是處理多維數據集。

通過這個設置,我沒有像原來的項目那樣得到同樣的錯誤,看起來,.dll沒有錯?

但是我也嘗試將目標服務器和多維數據集更改爲我原來的服務器和多維數據集,並讓我感到驚訝它的工作!

因此,我保存了該軟件包,並將其導入到我的原始項目中,並從那裏執行了包裝並運行。

+0

這是一個非常有趣的信息,謝謝你的分享。我需要考慮一下... –

1

這似乎是由於VS-2015組件不支持的部署版本。

  • 轉到項目 - >屬性
  • 在配置屬性 - >常規
  • 集TargetServerVersion到SQL Server 2017年