【发布时间】:2017-03-02 16:36:24
【问题描述】:
我有一个大型 SQLCMD 语法的 SQL 脚本存储库。每个脚本定义了 0 个或多个 $(SomeParam)。我们有一个实用程序,它执行脚本并传递$(params) 的值,基本上使我们能够为各种数据模型配置和自动化构建。
有时我们的构建过程会失败,因为脚本指定了$(param),但我们的实用程序中没有配置。即我们对这个$(param) 集没有价值
我想在执行这些脚本之前对其进行测试。测试运行应确保已将所有必需的$(params) 提供给脚本。 SQL 本身不应该被执行——我只想知道它是否可以编译。这可以使用sqlcmd实现吗?
考虑的替代方案
我考虑了一种替代方法,即使用 Powershell 脚本查找文件中所有 $(param) 的匹配项(使用 RegEx),并对照实用程序中的参数列表进行交叉检查。如果可能的话,我希望在 sqlcmd 命令行或 SQL 脚本本身中保留所有功能。
【问题讨论】:
-
可能是
SET NOEXEC ON的工作。 -
您能否提供一个额外的默认参数来指示它在测试模式下运行。然后使用这个标志只执行它不处于测试模式时包含的代码?这是我以前用来验证脚本而不运行的非常肮脏的解决方案。
-
@JeroenMostert - 我认为这可能是最好的方法。如果您可以将答案扩展一点,那么我会将其标记为正确答案。
标签: sql-server powershell sqlcmd