8

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

在此处输入图像描述

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

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

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

4

2 回答 2

1

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

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

sqlpackage.exe your_deploy_options /p:ExcludeObjectTypes=Filegroups

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

如果您有 Visual Studio,那么您可以在 VS 中将数据库作为数据库项目导入,然后从脚本中删除文件组,因此当您部署/比较架构时,它们不会被比较。

于 2018-03-20T11:49:27.890 回答
0

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

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

于 2017-02-28T11:08:31.713 回答