我正在尝试使用表格对象模型(TOM)C#脚本动态创建SSAS表格数据库。我可以创建表格模型的所有组件(计算表除外),并且无法在线找到任何解决方案。
任何对此的见解都受到高度赞赏。 谢谢
答案 0 :(得分:0)
这可以通过使用与MSOLAP提供程序的OLE DB连接执行TMSL命令(该命令是已计算表的DDL)来完成。首先,将需要执行命令以创建计算表。接下来,将需要对该表进行处理以使其可用,这在下面的示例的第二部分中进行了介绍。 OLE DB和SSAS连接都可以使用相同的连接字符串。确保在TMSL命令中正确转义任何\
或"
,并在连接字符串中相应地设置Extended Properties
和Provider
属性。
string connString = "Data Source=YourSSASInstance;Initial Catalog=YourTabularDatabase;Provider=MSOLAP.7;Integrated Security=SSPI;Extended Properties=Format=Tabular;";
using (OleDbConnection oleDBConn = new OleDbConnection(connString))
{
OleDbCommand oleDBCmd = new OleDbCommand(commandWithTMSL);
oleDBCmd.Connection = oleDBConn;
oleDBConn.Open();
oleDBCmd.ExecuteNonQuery();
}
using (Microsoft.AnalysisServices.Tabular.Server serv = new Microsoft.AnalysisServices.Tabular.Server())
{
serv.Connect(connString);
Microsoft.AnalysisServices.Tabular.Database db = serv.Databases["YourTabularDatabase"];
Model m = db.Model;
m.Tables["NewCalculatedTable"].RequestRefresh(RefreshType.Full);
m.SaveChanges();
}