如何从Invoke-Sqlcmd诊断此异常



我正在运行以下命令(我能想到的最小的可复制示例):

Invoke-Sqlcmd "select * from sys.databases"  | %{
    Invoke-Sqlcmd "select 1"     
}

我得到以下错误:

调用Sqlcmd:找不到任何适合指定的区域性或中性区域性。确保"pipeline.resources"已正确嵌入或链接到程序集中"System.Management.Automation",或者所有所需的附属程序集是可加载的并且完全签名的。在第1行字符:1+调用Sqlcmd"从sys.databases中选择*"|%{+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+CategoryInfo:InvalidResult:(:)[Invoke Sqlcmd],MissingManifestResourceException+FullyQualifiedErrorId:ExecutionFailed,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

厌倦了这个:

  • 既有ISE又有命令行
  • 提升("以管理员身份运行")和
  • 针对SQL 2012和SQL 2008
  • 从Windows 8和Server 2008

在所有情况下,结果都是一样的。

为什么以及如何诊断?

我还注意到使用invoke-sqlcmd通过管道将invoke-ssqlcmd命令链接在一起的问题。一个似乎可以解决这个问题的解决方法是,将第一个命令的输出保存到变量中,然后通过管道输出到下一个调用sqlcmd调用。

$databases = Invoke-Sqlcmd "select * from sys.databases"  
$databases | % { Invoke-Sqlcmd "select 1" }

最新更新