首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >invoke-sqlcmd空变量

invoke-sqlcmd空变量
EN

Stack Overflow用户
提问于 2017-06-28 21:16:07
回答 1查看 1.8K关注 0票数 1

我正在尝试使用Invoke-SqlCmd启动脚本执行SQL查询,作为包含SQLCMD变量的输入文件,例如$(varPROJECTNAME)。

例如:CREATE DATABASE [$(varPROJECTNAME)$(varDBNAME)]在这种情况下,我希望能够将空字符串设置为varPROJECTNAME值。

这个请求将使用经典的SQLCMD工具成功运行,但是使用Invoke-SqlCmd时,I get error,脚本变量varPROJECTNAME未定义。

代码语言:javascript
复制
Invoke-Sqlcmd  -Username $LoginSQL -Password $PasswordSQL -ServerInstance $InstanceSQL -Verbose  -InputFile "$rootPackage\DB\UpdateDB\00-initSql\00-SubsTechCreateDatabase.sql"  -Variable "varPROJECTNAME=$projectName","varDBNAME=$DatabaseName"

在上述情况下,如果为$projectName="",则会出现错误

是否可以设置一个调用Invoke-SqlCmd的默认值,或者从sql脚本的角度来看,在变量未定义时为其分配一个默认值?

非常感谢您的帮助

EN

回答 1

Stack Overflow用户

发布于 2017-06-28 22:55:10

在您的例子中,SQL工具非常有用地运行了一些错误检查,确保您在这里定义的所有变量都被传递给Invoke-SQLCommand来设置您的数据库。

我建议进行一个更改,让我们在脚本中添加一些逻辑,以查看您是否指定了$ProjectName值,如果指定了,则传递该值。如果不是,请运行稍微不同的命令。

代码语言:javascript
复制
If($projectName -ne $null){
 $variables = "varPROJECTNAME=$projectName","varDBNAME=$DatabaseName"
   }
 else{
 $variables = "varDBNAME=$DatabaseName"
  }

Invoke-Sqlcmd  -Username $LoginSQL -Password $PasswordSQL -ServerInstance $InstanceSQL `
  -Verbose  -InputFile "$rootPackage\DB\UpdateDB\00-initSql\00-SubsTechCreateDatabase.sql" `
  -Variable $variables

编辑

你可以试一下这个例子吗?

在您当前的代码中,替换以下内容

代码语言:javascript
复制
-Variable "varPROJECTNAME=$projectName"

使用

代码语言:javascript
复制
-Variable "varPROJECTNAME=`"$($projectName)`""
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44803611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档