#if DEBUG 在 SQL 个数据库项目中等效?

#if DEBUG equivalent in SQL Database Projects?

我正在尝试/想知道您是否可以在 SQL 数据库项目中进行特定于环境的编码,特别是在 PostDeploymentScript.sql

我知道可以在 .sql 文件中添加 SQL 特定于服务器环境的代码,但我更想知道如何执行 C# 编译时语句,例如 #if DEBUG { }?

这就是说,如果 DEBUG 配置的值与 RELEASE 不同,但无论它被部署到哪个 SQL 服务器都是相同的。

Here's a mock-up example of what it would look like in my head, if it worked

SSDT 似乎确实通过 DeploymentPlanModifier 扩展提供了自定义部署的功能。 Here might be a good starting point 深入研究该主题。

然而,在简要浏览了帮助主题之后,我怀疑只有在您的项目中使用 DACPAC 部署时才能使用此特定功能。如果您首选的部署方法是通过架构比较工具生成更改脚本,则它可能不起作用。那,还有需要写的C#代码量,怎么说呢,看着都让人望而却步。

除此之外,我看到的最简单的解决方案是使用专用的 SQLCMD 变量来控制部署逻辑。但是,这意味着您和您的团队必须在将任何部署到默认环境以外的环境之前更改其值。除非你能找到一种方法来完全自动化这个过程,否则最终人们会开始犯错误。