我正在使用SSDT创建我的表格模型,正在创建一个要分区的表(两周的数据-每年24个分区)。
通常,我正在准备2年的数据分区(意味着48个分区)。 将模型部署到Analysis Services时,可以通过连接到Analysis Services实例从SSMS访问模型
我的问题是,
我设法创建了一个自动化脚本,该脚本会生成XMLA查询以在SSMS中创建分区,我正在执行它,并且可以看到正在创建的分区,但是当返回SSDT并打开解决方案时,这些分区是没有反映在那里。再次打开解决方案时,是否有办法“强制” SSDT从分析服务实例读取元数据?
此外,如果我继续在SSDT中开发模型,则一旦我再次部署它,我通过SSMS所做的所有更改都将被覆盖,有没有办法避免这种情况?
在SSDT中手动创建分区可能非常痛苦... 我设法创建了一个脚本来自动化它,但是没有在SSDT中实现
有什么建议吗?
答案 0 :(得分:1)
您在SSDT中访问的数据库是您的工作区数据库。工作区数据库本质上是表格模型的本地副本。您在SSMS中添加到模型的分区已创建,工作空间数据库不同步。您可以通过删除/移动本地SSAS项目中使用的文件,然后在SSDT中创建新的Analysis Services项目并使用“从服务器(表)导入”选项,用当前版本的模型覆盖工作区数据库。表格模型的当前版本。这将使用模型的当前版本创建一个新的工作空间数据库。这样做时,请确保从本地SSAS项目中删除或移动文件时,移动的文件是针对本地项目的,而不是针对实际模型的。如果需要验证模型使用的文件的位置,则SSMS中SSAS实例的DataDir属性将显示此文件路径。
答案 1 :(得分:1)
正如userfl89所指出的,您在SSMS中创建的任何分区都需要“反向移植”到您的SSDT项目中,例如,在创建新项目时使用“从服务器导入(表)”选项。否则,从SSDT进行部署时,您可能会丢失分区(及其中的数据)。
或者,您可以使用BISM Normalizer(Visual Studio的插件)在SSDT和已部署的数据库之间来回合并更改(例如分区)。
还有一个Analysis Services Deployment Wizard,它接收项目\ bin \文件夹的内容,并允许您部署到数据库,并指定您不想覆盖现有分区。
最后,如果您还没有的话,我建议您看看Tabular Editor。它是开发SSDT的替代方法,因此当然会涉及一些学习,但是好消息是您可以执行partial deployments,以避免影响已经部署的数据库上的分区。>