2016-06-10 5 views
0

In SSAS 2014 (ver 12), konnte ich eine Tabelle mit dem Code verarbeiten:Prozesstabelle in Microsoft.AnalysisServices.Server.Tabular

using (Server server = new Server()) 
{ 
    Database database = server.Databases.FindByName(databaseName); 
    Table table = database.Model.Tables.Find(tableName); 
    table.Process(ProcessType.ProcessFull); 
} 

Der Code references "Microsoft.AnalysisServices" version =“ 11.0.2100.60 ".

In SSAS 2016 (Version 13) ist die Assembly I Referenz jedoch Microsoft.AnalysisServices.Server.Tabular.dll.

Im Tabellenobjekt gibt es keine Prozessfunktion mehr. Wie verarbeite ich eine Tabelle in der neuen Bibliothek?

Antwort

0

Um SSAS 2016-Datenbanken zu verarbeiten, musste ich stattdessen auf "Microsoft.AnalysisServices.AdomdClient" verweisen und einen JSON-Befehl an den Server senden.

public class TabularProcessor 
{ 
    public TabularProcessor(string serverName, string databaseName) 
    { 
     this.serverName = serverName; 
     this.databaseName = databaseName; 
     this.adomdProcessor = new AdomdProcessor(serverName); 
    } 

    private readonly AdomdProcessor adomdProcessor; 
    private readonly string serverName; 
    private readonly string databaseName; 

    public void ProcessTable(string tableName) 
    { 
     string commandText = @"{ 
""refresh"": { 
""type"": ""full"", 
""objects"": [ 
    { 
    ""database"": ""{database}"", 
    ""table"": ""{table}"" 
    } 
] 
} 
}"; 
     commandText = commandText 
      .Replace("{database}", databaseName) 
      .Replace("{table}", tableName); 

     adomdProcessor.ProcessCommand(commandText); 
    } 
} 

public class AdomdProcessor 
{ 
    private readonly string serverName; 

    public AdomdProcessor(string serverName) 
    { 
     this.serverName = serverName; 
    } 

    public void ProcessCommand(string commandText) 
    { 
     AdomdConnection cn = new AdomdConnection("Provider=MSOLAP;Data Source=" + serverName); 
     cn.Open(); 
     AdomdCommand cmd; 
     cmd = cn.CreateCommand(); 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = commandText; 
     cmd.ExecuteNonQuery(); 
     cn.Close(); 
    } 
}