发布dacpac(SSDT数据库项目)时配置数据库初始大小与自动增长默认值
是否可直接在dacpac中配置文件初始大小和自动增长规则
不行。SSDT数据库项目本身没有提供原生的配置项来定义数据文件、日志文件的初始大小、自动增长参数,最终生成的dacpac包也没有对应的内置配置,新建数据库时默认会继承目标SQL Server实例中model系统库的默认设置,无法直接通过dacpac覆盖该默认值。
除部署后脚本外的可选实现方案
- C#调用DacFx时通过
DacDeployOptions动态配置
你当前是通过C#代码调用DacFx API发布dacpac,可以直接在代码中构造DacDeployOptions对象,开启DeployDatabaseProperties配置,同时指定DatabaseSpecification下的文件属性,发布时会自动应用你设置的大小、增长规则,不需要修改SSDT项目内的脚本,适合多环境差异化配置的场景。 - 通过发布配置文件(*.publish.xml)定义
在SSDT项目中添加发布配置文件,在文件中添加数据库文件的属性配置,发布时不管是用VS可视化发布,还是在DacFx代码中加载该配置文件,都会自动应用对应的文件配置,不需要额外写ALTER脚本。 - 使用预部署脚本执行修改语句
除了部署后脚本,你也可以把ALTER DATABASE脚本放到预部署脚本中,预部署脚本的执行时机在数据库创建完成后、业务对象部署之前,修改文件配置不会影响后续表、索引等对象的空间分配。 - 自定义DacFx部署贡献者
如果你的场景需要批量、规则化处理多个数据库的文件配置逻辑,可以开发自定义的DacFx部署贡献者,在部署的生成脚本阶段自动注入修改文件属性的SQL语句,适合有统一发布规范的大规模部署场景。
示例修改数据库文件配置的SQL脚本如下:
ALTER DATABASE DatabaseTest MODIFY FILE (NAME = [SqlFile1], SIZE = 500MB, FILEGROWTH = 500MB);
内容的提问来源于stack exchange,提问作者ajeesh k
相关产品推荐
相关产品推荐

