我有一个SSAS数据库,它是由我使用的应用程序自动生成的。这个数据库有很多措施,我想定义"显示文件夹"的措施,所以立方体将在Excel中更加用户友好。我想要一个xml/mdx(脚本,将定义显示文件夹的措施。我发现的一种方法是在visual studio中手动执行一次,然后生成一个完整的"alter cube"xml脚本,该脚本应用当前的定义,并在立方体生成后每次运行它。问题是我需要一个更短的脚本,只会定义显示文件夹(完整的'alter cube'脚本很长,这为我创造了其他问题。
我不是很确定,但是我认为您不能使用XMLA ALTER
语句更改任何比完整度量定义更详细的内容。对于您的问题,最好的方法可能是使用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
的对象下面的任何对象上做的任何结构更改写回服务器。 - 你从服务器断开连接(可能通过
server
对象上的c#using
构造)。
AMO的文档见http://msdn.microsoft.com/en-us/library/microsoft.analysisservices.adomdserver(v=sql.105).aspx