【问题标题】:Invoke-Sqlcmd : A parameter cannot be found that matches parameter name 'OutputAs'Invoke-Sqlcmd:找不到与参数名称“OutputAs”匹配的参数
【发布时间】:2019-10-17 00:24:55
【问题描述】:

我有一个 powershell 脚本,它将运行 sql 命令并将结果作为数据集输出。

PowerShell:

(Invoke-Sqlcmd -ServerInstance $Server -Database 'STARS' -Username $Username -Password $Password -query $sqlCommand -OutputAs DataSet)

当我尝试运行脚本时出现以下错误。

Invoke-Sqlcmd : A parameter cannot be found that matches parameter name 'OutputAs'.
At D:\PipelinePowerShellScripts\UnitTests\Generate.Auth.Tokens.ps1:163 char:132
+ ... me $Username -Password $Password -query $sqlCommand -OutputAs DataSet ...
+                                                         ~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-Sqlcmd], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

PowerShell 版本:

Major.Minor.Build.Revision

5.1.14409.1005

当我在本地运行此脚本时,如果运行没有问题。但是,尝试在 Windows Server 2012 R2 上运行它会返回上述错误。

【问题讨论】:

  • $sqlCommand 是文字命令还是.sql 文件的路径?如果它是一个命令,请尝试一个比您希望执行的命令更简单的命令,以进行测试。命令格式是否正确?如果你重新排列-query-OutputAs 会发生什么?如果您完全删除 -OutputAs,您是否会以 DataRows 的默认格式获得结果?
  • 当你运行get-command Invoke-Sqlcmd 时你只得到一个结果吗?那是什么版本?我有一个没有该参数的旧版本。我有 PSv5,如果它是标准的,这对我来说就是新闻,因为我必须为我导入一个模块。
  • Cmdlet | Invoke-Sqlcmd | 21.1.18121 | SqlServer

标签: sql-server powershell


【解决方案1】:

我遇到了同样的问题,因为该模块已针对 powershell v5 完全重写。 您需要在该服务器上运行 get-help invoke-sqlcmd -full 以查看该版本中的可用方法。

HERE - 你有更好的解释(“两个产品”部分)

我认为最简单的方法是将服务器上的 powershell 升级到 5+ 并使用新的 SQL 模块。

【讨论】:

  • 当我运行我所拥有的命令时,它有-OutputAs <OutputType>
  • 您能告诉我们您在该 2012-R2 服务器上安装了哪些 powershell 版本以及安装的 MSSQL 客户端版本(如果有)吗?这将有助于尝试复制
猜你喜欢
  • 2021-10-15
  • 2022-08-04
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多