Visual Studio生成SSDT脚本时如何统一设置全分区DATA_COMPRESSION?
解决Visual Studio生成分区索引脚本时统一设置DATA_COMPRESSION的问题
方法一:修改SSDT数据库项目中索引的属性
- 在Visual Studio的数据库项目里,找到目标索引对应的
.sql文件(一般在Indexes文件夹下),或者通过对象资源管理器打开索引的属性窗口。 - 在属性窗口中找到Data Compression选项,选择你需要的压缩类型(比如
Page)。 - 保存更改后重新生成发布脚本,此时生成的
CREATE INDEX语句会使用全局的DATA_COMPRESSION = PAGE,而非按分区单独指定。
方法二:手动编辑索引的脚本定义
如果属性窗口设置未生效,可直接修改索引的脚本代码:
- 打开项目中索引的
.sql文件,删除WITH子句里所有带ON PARTITIONS (X)的DATA_COMPRESSION设置行,只保留一行DATA_COMPRESSION = PAGE。 - 修改后的示例脚本:
CREATE CLUSTERED INDEX [ExampleIndex] ON [dbo].[ExampleTable]([ID] ASC) WITH (DATA_COMPRESSION = PAGE) ON [ExamplePartitionScheme] ([ID]);
- 保存后重新生成发布脚本即可。
方法三:调整发布配置的比较选项
若上述方法无效,检查发布配置的高级选项:
- 在发布向导中点击高级按钮,打开高级发布设置。
- 在比较选项中,确保未勾选忽略数据压缩(勾选会跳过压缩设置对比,我们需要保留全局压缩)。
- 尝试勾选忽略分区方案和函数的差异,这样发布时不会因分区数不一致报错,同时保留全局压缩设置。
内容的提问来源于stack exchange,提问作者lompa
相关产品推荐
相关产品推荐

