路径中的 SQLCMD 变量
SQLCMD variable in path
我正在使用一些我希望可重用的 SQL 脚本,因此我需要使用一些变量。
我有一个 bat 脚本 运行 sql 带有 sqlcmd
的脚本
sqlcmd -S <SERVER> -v PROJECT="<PROJECTNAME>" -i .\start.sql
在 start.sql 脚本中,我执行另一个 sql 脚本,如下所示:
:r .\<PROJECTNAME>\init.sql
所以我对变量的值进行了硬编码并且效果很好。我想使用变量本身,但我无法让它工作。
:r .$(PROJECT)\init.sql
这里的最后一行是我认为可行的。我已经通过这样做测试打印出变量 PROJECT 中的值:
PRINT '$(PROJECT)'
这给了我变量的值。
希望有人能帮助我使用变量来执行文件夹中的脚本。
提前致谢。
编辑:
PRINT $(PROJECT) 出现以下错误 message:The 名称 "XXX" 在此上下文中是不允许的。有效表达式是常量、常量表达式和(在某些上下文中)变量。不允许列名。
XXX = 变量的值。
我做了一个小实验,据我所知,我已经设法获得了与此类似的语法来为我工作。我发现如果我复制你所做的,我会得到以下错误:
A fatal scripting error occurred.
Cannot find directory in the path specified for ":r" command.
相反,我将整个路径放入变量中 - 它有效。因此,请尝试将您的 .sql 文件更改为:
:r $(PROJECT_FILE_NAME)
并像这样从 SQLCMD 调用它:
sqlcmd -S <SERVER> -v PROJECT_FILE_NAME=".\<PROJECTNAME>\init.sql" -i .\start.sql
当我采用这种方法时,运行 文件 init.sql
没有错误。
我正在使用一些我希望可重用的 SQL 脚本,因此我需要使用一些变量。
我有一个 bat 脚本 运行 sql 带有 sqlcmd
的脚本sqlcmd -S <SERVER> -v PROJECT="<PROJECTNAME>" -i .\start.sql
在 start.sql 脚本中,我执行另一个 sql 脚本,如下所示:
:r .\<PROJECTNAME>\init.sql
所以我对变量的值进行了硬编码并且效果很好。我想使用变量本身,但我无法让它工作。
:r .$(PROJECT)\init.sql
这里的最后一行是我认为可行的。我已经通过这样做测试打印出变量 PROJECT 中的值:
PRINT '$(PROJECT)'
这给了我变量的值。
希望有人能帮助我使用变量来执行文件夹中的脚本。
提前致谢。
编辑: PRINT $(PROJECT) 出现以下错误 message:The 名称 "XXX" 在此上下文中是不允许的。有效表达式是常量、常量表达式和(在某些上下文中)变量。不允许列名。
XXX = 变量的值。
我做了一个小实验,据我所知,我已经设法获得了与此类似的语法来为我工作。我发现如果我复制你所做的,我会得到以下错误:
A fatal scripting error occurred. Cannot find directory in the path specified for ":r" command.
相反,我将整个路径放入变量中 - 它有效。因此,请尝试将您的 .sql 文件更改为:
:r $(PROJECT_FILE_NAME)
并像这样从 SQLCMD 调用它:
sqlcmd -S <SERVER> -v PROJECT_FILE_NAME=".\<PROJECTNAME>\init.sql" -i .\start.sql
当我采用这种方法时,运行 文件 init.sql
没有错误。