我们有一个现有的数据库和一个基于 DACPAC 的部署程序,可以在部署时向其发送架构更新。 数据库具有现有的分区函数和现有的分区方案,使用数据库的应用程序将在运行时创建新的分区方案。目前我们看到SSDT删除现有分区并重建表。列数据不会丢失,但应用程序创建的分区方案会丢失。
当我们将 DACPAC 部署到现有数据库实例时,我们可以做什么来阻止 SSDT 删除现有分区方案?
编辑:我们已经尝试过“忽略分区方案”(由https://dba.stackexchange.com/a/18826/23463建议)和“忽略分区功能”(相同的高级设置区域)。这并没有改变结果。
编辑2:所有这些选项都已尝试过。这是我的 dbas 的消息:
这是关于我们的应用程序,其中分区是在运行时创建的。每当我们将主 dacpac 应用于数据库时,它都会重新创建分区函数和方案,从而删除运行时创建的任何分区。 我们尝试了:如下所示的几种选项。根据文档,它们应该可以工作,但不能工作
/p:ExcludeObjectType=PartitionSchemes
/p:ExcludeObjectType=PartitionFunctions
/p:IgnoreObjectPlacementOnPartitionScheme=true
/p:IgnorePartitionSchemes=true
/p:IgnoreTablePartitionOptions=true
/p:DoNotDropObjectType=PartitionSchemes
/p:DoNotDropObjectType=PartitionFunctions
需要额外的魔法来保持分区不变:
/p:IgnoreIndexOptions=true /p:IgnoreTableOptions=true