背景
我们正在使用针对Server 2012的Server数据工具(SQL ),该工具使用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。我们希望项目中的同义词不要在发布期间重新创建。

发布于 2020-07-16 07:34:31
多亏了@Bill的推荐,我才能在发布简介中找到ff:

显然,如果我们想要使用命令行来实现这一点,那么/p:ExcludeObjectType=Synonyms是SqlPackage的一个选项。
在标出排除同义词之后,在发布概要文件中添加了以下一行:
<PropertyGroup>
...
<ExcludeSynonyms>True</ExcludeSynonyms>
</PropertyGroup>https://stackoverflow.com/questions/62815872
复制相似问题