3

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

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

我收到以下错误:

Invoke-Sqlcmd:找不到适合指定区域性或中性区域性的任何资源。确保“pipeline.resources”在编译时被正确嵌入或链接到程序集“System.Management.Automation”中,或者所有所需的附属程序集都是可加载的并且是完全签名的。在 line:1 char:1 + Invoke-Sqlcmd "select * from sys.databases" | %{ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidResult : (:) [Invoke-Sqlcmd],MissingManifestResourceException + FullyQualifiedErrorId:ExecutionFailed,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

累了这个:

  • 使用 ISE 和命令行
  • 提升(“以管理员身份运行”)而不是
  • 针对 SQL 2012 和 SQL 2008
  • 从 Windows 8 和 Server 2008

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

为什么以及如何诊断?

4

1 回答 1

5

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

$databases = Invoke-Sqlcmd "select * from sys.databases"  
$databases | % { Invoke-Sqlcmd "select 1" }
于 2013-08-06T10:53:20.257 回答