SSDT 防止发布时删除同义词

问题描述 投票:0回答:2

背景

我们正在使用针对 SQL Server 2012 的 SQL 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
。我们希望项目中的同义词不会在发布期间重新创建。

sql-server sql-server-2012 sql-server-data-tools
2个回答
0
投票

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

显然,如果我们想使用命令行执行此操作,则

SqlPackage
有一个选项/p:ExcludeObjectType=Synonyms

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

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

0
投票

排除不适用于我,也适用于下面提到的其他人。 需要帮助看看是否还遗漏了什么。

https://www.codeproject.com/Questions/5261229/How-to-ignore-exclude-security-object-when-publish

© www.soinside.com 2019 - 2024. All rights reserved.