I have an SSAS DB that was automatically generated by an application i use. This DB has a lot of measures and I would like to define 'display folder' to the measures so the cube will be more user friendly in Excel. I want an xmla/mdx ( script that will define to display folder for the measures. One way i found is to manually do that one time in visual studio and then generate a full 'alter cube' xmla scripts that applies the current definitions and run it every time after the cube is generated. The problem is I need a shorter scripts that will only define the display folder (the full 'alter cube' script is very long and this creates other problems for me.
1 回答
我不确定,但我认为您不能使用 XMLAALTER
语句来更改比完整度量定义更详细的任何内容。解决您的问题的最佳方法可能是使用 AMO 的小型 .net 程序。我在下面使用 C# 作为示例代码,但您也可以使用 VB.net。AMO 的工作方式是:
您可以使用如下代码连接到服务器:
Server server = new Server(); server.Connect("Data source=servername\\instancename;Initial catalog=Adventure Works DW 2008 SE");
您可以浏览从数据库到要更改的对象的层次结构(在您的情况下为度量),类似于以下内容:
MeasureCollection measures = sever.Databases.FindByName("Adventure Works DW 2008 SE").Cubes.Find("YourCubeName").Measures; -- choose the measure(s) you need
- 您更改此对象的某些属性(仅更改 RAM 中的对象结构)。
- 您在对象层次结构的任何对象(在您的情况下可能是多维数据集对象)上调用该
Update()
方法,该方法将您所做的任何结构更改写入您调用Update
回服务器的对象下方的任何对象。 - 您断开与服务器的连接(可能通过对象
using
上的 C# 构造server
)。
有关 AMO 的文档,请参阅http://msdn.microsoft.com/en-us/library/microsoft.analysisservices.adomdserver(v=sql.105).aspx。