SSDT 防止在发布时删除同义词

SSDT Prevent Synonym Dropping on Publish

背景

我们正在使用 SQL 服务器数据工具(SQL 项目),目标是 SQL Server 2012,它使用 DACPAC 发布到我们不同的环境。

问题

每当我们发布 SSDT 时,都会根据生成的发布脚本删除和重新创建同义词。我们希望防止这种情况发生,因为我们有一个存储过程负责为每个环境设置正确的同义词目标。

GO
PRINT N'Dropping [dbo].[MY_SYNONYM]...';
GO
DROP SYNONYM [dbo].[MY_SYNONYM];
GO
PRINT N'Creating [dbo].[MY_SYNONYM]...';
GO
CREATE SYNONYM [dbo].[MY_SYNONYM] FOR [MY_DEFAULT_TARGET];

我已经尝试将同义词的构建操作设置为 Build 以外的任何其他内容,但这会导致编译器出现问题并导致构建失败。

我们的主要目标是防止为未更改目标的同义词重新创建同义词。我们知道我们可以通过利用 sys.synonyms 进行比较来在我们的存储过程中处理这个问题。感谢任何帮助,谢谢。

编辑:

我可以在高级发布设置中看到 ff,但我们不想启用 Drop objects in target but not in source。我们希望项目中的同义词不会在发布期间重新创建。

感谢@Bill Jetzer 的推荐,我能够在发布配置文件中找到 ff:

显然,如果我们想使用命令行执行此操作,SqlPackage 有一个选项 /p:ExcludeObjectType=Synonyms

勾选排除同义词后,在发布配置文件中添加了以下行:

<PropertyGroup>
    ...
    <ExcludeSynonyms>True</ExcludeSynonyms>
</PropertyGroup>