gpt4 book ai didi

sql - 如何有条件地在 ssdt 部署后脚本中包含大型脚本?

转载 作者:行者123 更新时间:2023-12-04 22:30:56 25 4
gpt4 key购买 nike

在我们的 SSDT 项目中,我们有一个巨大的脚本,其中包含许多用于从旧系统导入数据的 INSERT 语句。使用 sqlcmd 变量,我希望能够有条件地将文件包含到部署后脚本中。

我们目前正在使用 :r包含内联脚本的语法:

IF '$(ImportData)' = 'true'
BEGIN
:r .\Import\OldSystem.sql
END

这是一个问题,因为脚本被包含 内联 不管是否 $(ImportData)是对还是错,而且文件太大,导致构建速度减慢了大约 15 分钟。

是否有另一种方法有条件地包含此脚本文件,以免减慢构建速度?

最佳答案

而不是将我先前的答案与另一个答案混淆。有一个非常简单的选项的特殊情况。

为每个执行可能性创建单独的 SQLCMD 输入文件。
这里的关键是使用控制变量的值命名执行输入文件。

因此,例如,您的发布脚本定义了变量“Config”,该变量可能具有以下值之一:“Dev”、“QA”或“Prod”。

创建 3 个名为“DevPostDeploy.sql”、“QAPostDeploy.sql”和“ProdPostDeploy.sql”的部署后脚本。

像这样编码你的实际部署后文件:

:r ."\"$(Config)PostDeploy.sql

这非常类似于构建事件机制,您可以用适当的脚本覆盖脚本,除非您不需要构建事件。但是您依赖于非常具体地命名您的脚本。

关于sql - 如何有条件地在 ssdt 部署后脚本中包含大型脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37143638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com