【发布时间】:2016-09-05 17:36:02
【问题描述】:
在我们的 SSDT 项目中,我们有一个巨大的脚本,其中包含许多用于从旧系统导入数据的 INSERT 语句。使用 sqlcmd 变量,我希望能够有条件地将文件包含到部署后脚本中。
我们目前正在使用 :r 语法,其中包括内联脚本:
IF '$(ImportData)' = 'true'
BEGIN
:r .\Import\OldSystem.sql
END
这是一个问题,因为无论$(ImportData) 是真还是假,脚本都被包含在内联中,而且文件太大以至于将构建速度减慢了大约 15 分钟。 p>
是否有另一种方法可以有条件地包含此脚本文件,以免减慢构建速度?
【问题讨论】:
-
:R 命令以及所有其他 SQLCMD 命令在条件块中不起作用 - 它们始终执行。解决方法是使用 OldSystem.sql 文件用 IF '$(ImportData)' = 'true' 包装旧系统代码
-
为了性能,您是否考虑过批量插入而不是 INSERTing?
标签: sql sql-server sql-server-2014 sql-server-data-tools