在 SSMS 中创建 SSAS 表格分区未反映在 SSDT 解决方案中
Creating SSAS Tabular Partitions in SSMS is not reflected in SSDT solution
我正在使用 SSDT 创建我的表格模型,我正在创建一个正在分区的 table(两周的数据 - 每年 24 个分区)见下文。
通常我准备2年的数据分区(意思是48个分区)。
当我将模型部署到 Analysis Services 时,我可以通过连接到我的 Analysis Services 实例从 SSMS 访问它
我的问题是,
我已经成功地创建了一个自动脚本来生成在 SSMS 中创建分区的 XMLA 查询,我正在执行它并且我可以看到正在创建的分区,但是当返回到 SSDT 并打开解决方案时,这些分区没有反映在那里。有没有办法让 SSDT 在再次打开解决方案时从分析服务实例中读取元数据?
此外,如果我继续在 SSDT 中开发模型,一旦我再次部署它,我通过 SSMS 所做的所有更改都将被覆盖,有没有办法避免这种情况?
在 SSDT 中手动创建分区可能会非常痛苦...
我已经设法创建了一个脚本来自动化它,但不是在 SSDT
有什么建议吗?
您在 SSDT 中访问的数据库是您的工作区数据库。工作区数据库本质上是表格模型的本地副本。您在 SSMS 中添加到模型的分区已创建,工作区数据库只是不同步。您可以通过 deleting/moving 本地 SSAS 项目中使用的文件,然后在 SSDT 中创建一个新的 Analysis Services 项目并使用 "Import From Server (Tabular)" 选项,然后选择表格模型的当前版本。这将使用当前版本的模型创建一个新的工作区数据库。执行此操作时,请确保当您从本地 SSAS 项目中删除或移动文件时,您移动的文件是针对您的本地项目,而不是实际模型。如果您需要验证模型使用的文件的位置,SSMS 中SSAS 实例的DataDir 属性 将显示此文件路径。
正如 userfl89 已经指出的那样,您在 SSMS 中创建的任何分区都需要 "backported" 到您的 SSDT 项目中,例如在创建新项目时使用 "Import From Server (Tabular)" 选项。否则,从 SSDT 部署时,您可能会丢失分区(以及分区中包含的数据)。
或者,您可以使用 BISM Normalizer - Visual Studio 的插件 - 在 SSDT 和部署的数据库之间来回合并更改(例如分区)。
还有一个 Analysis Services Deployment Wizard,它获取项目 \bin\ 文件夹的内容并允许您部署到数据库,指定您不想覆盖现有分区。
最后,如果您还没有看过,我建议您看一下 Tabular Editor. It's an alternative to SSDT for developing the model, so there will be some learning involved of course, but the good news is that you can do partial deployments,以避免影响已经部署的数据库上的分区。
我正在使用 SSDT 创建我的表格模型,我正在创建一个正在分区的 table(两周的数据 - 每年 24 个分区)见下文。
通常我准备2年的数据分区(意思是48个分区)。 当我将模型部署到 Analysis Services 时,我可以通过连接到我的 Analysis Services 实例从 SSMS 访问它
我的问题是,
我已经成功地创建了一个自动脚本来生成在 SSMS 中创建分区的 XMLA 查询,我正在执行它并且我可以看到正在创建的分区,但是当返回到 SSDT 并打开解决方案时,这些分区没有反映在那里。有没有办法让 SSDT 在再次打开解决方案时从分析服务实例中读取元数据?
此外,如果我继续在 SSDT 中开发模型,一旦我再次部署它,我通过 SSMS 所做的所有更改都将被覆盖,有没有办法避免这种情况?
在 SSDT 中手动创建分区可能会非常痛苦... 我已经设法创建了一个脚本来自动化它,但不是在 SSDT
有什么建议吗?
您在 SSDT 中访问的数据库是您的工作区数据库。工作区数据库本质上是表格模型的本地副本。您在 SSMS 中添加到模型的分区已创建,工作区数据库只是不同步。您可以通过 deleting/moving 本地 SSAS 项目中使用的文件,然后在 SSDT 中创建一个新的 Analysis Services 项目并使用 "Import From Server (Tabular)" 选项,然后选择表格模型的当前版本。这将使用当前版本的模型创建一个新的工作区数据库。执行此操作时,请确保当您从本地 SSAS 项目中删除或移动文件时,您移动的文件是针对您的本地项目,而不是实际模型。如果您需要验证模型使用的文件的位置,SSMS 中SSAS 实例的DataDir 属性 将显示此文件路径。
正如 userfl89 已经指出的那样,您在 SSMS 中创建的任何分区都需要 "backported" 到您的 SSDT 项目中,例如在创建新项目时使用 "Import From Server (Tabular)" 选项。否则,从 SSDT 部署时,您可能会丢失分区(以及分区中包含的数据)。
或者,您可以使用 BISM Normalizer - Visual Studio 的插件 - 在 SSDT 和部署的数据库之间来回合并更改(例如分区)。
还有一个 Analysis Services Deployment Wizard,它获取项目 \bin\ 文件夹的内容并允许您部署到数据库,指定您不想覆盖现有分区。
最后,如果您还没有看过,我建议您看一下 Tabular Editor. It's an alternative to SSDT for developing the model, so there will be some learning involved of course, but the good news is that you can do partial deployments,以避免影响已经部署的数据库上的分区。