【问题标题】:How do I use a variable in an SQL script passed in from a powershell script如何在从 powershell 脚本传入的 SQL 脚本中使用变量
【发布时间】:2015-02-16 05:12:14
【问题描述】:

我是 Powershell 的新手,遇到了一些语法问题。我有一个 powershell 脚本,它调用一个带有我想在脚本中访问的变量的 SQL 脚本。

param (
[string] $inst = "all"
)

invoke-sqlcmd -inputfile "D:\PowershellScripts\testSQL\testScript.sql" -variable $powerShellVar=$inst -serverinstance '.\sql2008';

在我的 SQL 查询中,我希望能够像这样访问 $powerShellVar 变量

print $powerShellVar

但是,当我这样做时,我得到了这个错误

Invoke-Sqlcmd : Invalid pseudocolumn "$powerShellVar"

我做错了什么?

【问题讨论】:

  • 好像是sql文件中的变量引用问题。将 sql 脚本也添加到帖子中。
  • @von - 我有。它得到的唯一行是打印语句

标签: sql powershell sqlcmd


【解决方案1】:

参数语法无效。难怪,因为这没有很好的记录。 -variable 参数假定一个包含名称/值对的数组,如下所示,

$sqlParameters = @("variable1 = 'value1'", "variable2 = 'value2'")

对于单个参数,

$sqlParameters = @("variable1 = 'value1'")

通过这种语法,假设 printarg.sql 包含select $(powerShellVar),这应该可以工作:

$sqlParameters = @("powerShellVar = 'foobar'")
invoke-sqlcmd -ServerInstance computer\instance -inputfile "c:\temp\printarg.sql" -variable $sqlParameters 

【讨论】:

  • 嗨,我已完全按照您的说明粘贴到 powershell 和 sql 脚本中,但我仍然收到“Invoke-Sqlcmd:对象引用未设置为对象实例”。错误。我认为这与选择 $(powerShellVar) 有关。是否有命令检查 sql 查询上下文中的所有现有变量,因为看起来该变量仍然不存在。
  • 实际上我把它改成了这个 $sqlParameters = "powerShellVar='foobar'" 并且它起作用了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多