【问题标题】:PowerShell Invoke-Sqlcmd stored procedure query with multiple input variables具有多个输入变量的 PowerShell Invoke-Sqlcmd 存储过程查询
【发布时间】:2017-02-16 22:38:02
【问题描述】:

我有一个 SQL Server 存储过程,我试图通过 PowerShell 运行它,但多个参数的语法无法正常工作。

存储过程需要 3 个输入参数,但其中任何一个(或全部)都可以有多个值传递给它。我可以很好地传递一个变量,但是当我尝试添加多个值时会出错。

$SqlItems = "Items='0212014080804','0212014080630','0212014080620'"
$SQLLogs =  "Lobs=''"
$SQLCodes = "CC=''"

Invoke-Sqlcmd -Query "EXEC proc_BS_Course_Migration @Items=`$(Items), @Lobs=`$(Logs), @CC=`$(CC)" -Variable $SQLItems, $SQLLogs, $SQLCodes 

$SqlItems = "Items='0212014080804'" 上面的代码工作正常。一旦这些变量中的任何一个变长,脚本就会死掉(在 SQL 本身中可以正常工作)

我正在运行 PowerShell 5、SQL Server 2012 以防万一

【问题讨论】:

  • 能否为您的存储过程提供参数声明语句?就目前而言,很难确定参数的预期值。

标签: powershell sql-server-2012


【解决方案1】:

你尝试过这样的事情吗?这是推荐的方式:

Invoke-SQLCommand -connectionString $sqlConnStr -commandText "proc_BS_Course_Migration" -commandType StoredProcedure -parameters @{"@Items" = "'0212014080804','0212014080630','0212014080620'", "@Lobs" = "''", "@CC" = "''" }

【讨论】:

  • -Parameters 参数不存在。我检查了 Invoke-Sqlcmd 上的 MS 文档并检查了最新安装的模块 21.1.18068。
  • 起初我以为这是指 Invoke-Sqlcmd,直到我仔细观察。快速搜索了一下,我认为您指的是:Invoke-SqlCommand 或类似的东西。最好在您的答案中限定它,因为它可能会引起混淆,并且原始问题是指:sqlpsSqlServer
猜你喜欢
  • 1970-01-01
  • 2021-05-28
  • 2018-04-08
  • 1970-01-01
  • 2014-06-05
  • 2016-05-11
  • 2015-07-06
  • 2019-06-05
  • 2013-05-15
相关资源
最近更新 更多