2017-07-17 41 views
-1

SSISパッケージを使用してデータウェアハウス用のETLセットアップを作成しました。メソッドが見つかりません:Microsoft.AnalysisServices

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

私はいくつかがあると疑われる: すべては、私は私のキューブを押していないok追加するたびに、私は次のエラーを取得する「Analysis Services処理タスクエディタ」で非常に最後のステップまで

を正常に動作していますDLLで問題が発生していますが、どちらがわからないのでしょうか。 Microsoft.AnalysisServices.dllが私のSQL Server(C:¥Program Files(x86)¥Microsoft SQL Server¥120¥SDK¥Assemblies)にインストールされています Visual Studioのインストールフォルダ内に見つかりませんでした。

+0

へ>一般

  • 設定TargetServerVersionを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 \ assembly。 C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ Microsoft.AnalysisServices.Coreが見つかりました。正しい場合は、Microsoft.AnalysisServices.ProcessTypeの一部です。 – VegardKT

    0

    同じ問題があります。

    興味深いこと:プロジェクトの互換性をSQL Server vNextに切り替えてから、正常に処理タスクを作成し、OKなどの作業を成功させることができます(奇跡です)。展開する。

    しかし、同じパッケージにスクリプトタスクがある場合は、他の回避策を試すことができます(実際には現在使用しています)。スクリプトタスクを使用して、 "Analysis Services Execute DDL Task"の変数(この例では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 Microsoft DEV環境はとてもバギーで、13.0以下のバージョンを作成しようとするとちょっと壊れてしまったようです。

    +0

    ありがとうPavel!他のすべてが失敗した場合、これをバックアップソリューションとしてバックポケットに残しておきます。 – VegardKT

    1

    回避策が見つかりました。

    私はAdventureWorksデータセットの問題を再現して、問題が.dllであり、自分のキューブや他のものではないことを確認しようとしていました。

    私は、AdventureWorksデータセットからキューブで新しいOLTP & DWHを作成し、キューブを処理する唯一のステップである新しいSSISプロジェクトを作成しました。

    この設定では、元のプロジェクトと同じエラーは発生しませんでした。一見、.dllに何も問題はありませんでしたか?

    しかし、私も元のサーバーとキューブを変更しようとしましたが、私の驚いたことにそれは機能しました!

    私はそのパッケージを保存し、私の元のプロジェクトにインポートし、そこからパッケージをexcecuted、それは動作します。

    +0

    非常に興味深い情報です。共有してくれてありがとう。私はそれを考える必要がある... –

    1

    これは、VS-2015コンポーネントでサポートされていない展開バージョンが原因と考えられます。

    • ゴー構成プロパティで> [プロパティ]
    • プロジェクト - する - SQL Serverの2017
    関連する問題