SQL Server Data Tools 和分区函数

gon*_*alu 17 sql-server

我正在创建一个滑动窗口加载场景,分区函数将随着时间的推移改变它们的边界。

我在我的 SQL Server Data Tools (SSDT) 数据库项目中创建了一些分区函数,并带有一些硬编码的初始边界。

但是,随着时间的推移,分区函数的边界发生变化,未来的SSDT数据库发布将恢复到原来的边界。

有没有办法优雅地处理这种情况,可能是通过禁用分区功能的发布?

我尝试将SSDT 中分区函数的Build Action属性从默认更改BuildNone,但是由于依赖对象中缺少引用,项目无法构建。

gon*_*alu 17

我能够找到解决我的问题的方法——希望这对其他人有所帮助。

为了避免每个数据库发布重新创建分区功能,您可以在高级发布设置对话框中选中忽略分区方案选项(数据库发布对话框中的高级...按钮)。

从选项的描述(强调我的):

指定在发布到数据库时是否应忽略或更新分区方案和函数中的差异。

但是,如果您使用页或行压缩定义了分区对象(表或索引),尽管忽略分区方案选项不再重新创建分区函数,但无论如何都会重新创建分区对象。

发生这种情况是因为分区对象使用每个分区定义的压缩编写脚本,并且由于对象具有与最初定义的不同数量的分区,SSDT 在发布时重新创建对象。例如(格式化):

WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS (1)
     , DATA_COMPRESSION = PAGE ON PARTITIONS (2)
     , ...
Run Code Online (Sandbox Code Playgroud)

为了避免这种情况发生,您还可以在同一个“高级发布设置”对话框中选中“忽略表选项”选项- 请记住,您将忽略其他选项,例如和(表选项的引用)。ALLOW_ROW_LOCKSALLOW_PAGE_LOCKS

高级发布设置对话框