代码之家  ›  专栏  ›  技术社区  ›  hkravitz

在SSMS中创建SSAS表格分区在SSDT解决方案中没有反映出来

  •  0
  • hkravitz  · 技术社区  · 6 年前

    我正在使用SSDT创建我的表格模型,我正在创建一个正在分区的表(两周的数据-每年24个分区),如下所示。

    Partitions

    通常我要准备2年的数据分区(意味着48个分区)。 当我将模型部署到AnalysisServices时,可以通过连接到我的AnalysisServices实例从SSMS访问它

    Partitions2

    我的问题是,

    我已经成功地创建了一个自动脚本,它生成了在SSMS中创建分区的XMLA查询,我正在执行它,我可以看到正在创建的分区,但是当返回到SSDT并打开解决方案时,这些分区并没有反映在那里。是否有办法在再次打开解决方案时“强制”SSDT从analysis services实例读取元数据?

    另外,如果我继续在SSDT中开发模型,一旦我再次部署它,我通过SSMS所做的所有更改都将被覆盖,有没有办法避免这种情况?

    在SSDT中手动创建分区可能非常痛苦。。。 我已经成功地创建了一个脚本来自动化它,但是在SSDT中没有

    有什么建议吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Dan    6 年前

    正如userfl89已经指出的,在SSMS中创建的任何分区都需要“后端口”到SSDT项目中,例如,在创建新项目时使用“从服务器导入(表格)”选项。否则,在从SSDT部署时可能会丢失分区(以及其中包含的数据)。

    或者,您可以使用 BISM Normalizer -Visual Studio的插件-在SSDT和部署的数据库之间来回合并更改(如分区)。

    还有 Analysis Services Deployment Wizard 它包含项目\ bin \文件夹的内容,并允许您部署到数据库,指定不希望覆盖现有分区。

    最后,如果你还没有,我建议你看看 Tabular Editor . 它是SSDT开发模型的一种替代方法,因此当然会涉及到一些学习,但好消息是您可以 partial deployments ,以避免影响已部署数据库上的分区。

    enter image description here

        2
  •  1
  •   userfl89    6 年前

    您在SSDT中访问的数据库是您的工作区数据库。工作区数据库本质上是表格式模型的本地副本。您在SSMS中添加到模型的分区已创建,工作区数据库刚刚不同步。您可以使用当前版本的模型覆盖工作区数据库,方法是删除/移动本地SSAS项目中使用的文件,然后在SSDT中创建新的Analysis Services项目,并使用“从服务器导入(表格)”选项,然后选择表格模型的当前版本。这将使用模型的当前版本创建新的工作区数据库。执行此操作时,请确保从本地SSAS项目中删除或移动文件时,所移动的文件是本地项目的文件,而不是实际模型的文件。如果需要验证模型使用的文件的位置,SSMS中SSAS实例的DataDir属性将显示此文件路径。