有什么方法可以停止 SqlPackage.exe 在部署脚本中设置默认文件组吗?

Is there any way to stop SqlPackage.exe setting default Filegroup in deployment script?

我们正在使用 Sql 服务器数据库项目,使用 SqlPackage.exe 从 DacPac 创建部署脚本。我们在各种环境中有不同的 SQL 服务器文件组设置。 部署时,我们排除文件组,因为我们希望在默认文件组中创建对象。在数据库项目设置中,默认文件组未从 PRIMARY 更改。

在尝试部署到默认文件组为而非 PRIMARY 的环境时会出现问题,因为包含以下代码...

ALTER DATABASE [$(DatabaseName)]
    MODIFY FILEGROUP [PRIMARY] DEFAULT;

有没有办法防止在部署中产生这种情况SQL?

我不知道你是否可以在 SSDT 中禁用它。

但是您可以使用部署计划贡献者来过滤掉 MODIFY FILEGROUP 语句或按照您想要的方式更改它。您可以在此处找到详细说明和工作代码:http://scardevblog.blogspot.com/2015/03/ssdt-generates-2012-option-for-target.html

当您在 SQL Server Management Studio 中从 SSDT 生成 dacpac 文件时,您无法选择提取到 dacpac 的对象类型。

但是当您通过命令行 运行 sqlpackage.exe 时,您可以使用一个参数。

sqlpackage.exe your_deploy_options /p:ExcludeObjectTypes=文件组

这将忽略文件组的部署。 有关完整选项,请参阅此参考资料:https://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx

如果您有 Visual Studio,那么您可以将数据库作为数据库项目导入 VS 中,然后从脚本中删除文件组,这样当您 deploy/compare 模式时,它们不会被比较.