Как диагностировать это исключение из Invoke-Sqlcmd?

Я запускаю следующую команду (наименьший воспроизводимый пример, который я смог придумать):

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

Я получаю следующую ошибку:

Invoke-Sqlcmd: не удалось найти ресурсы, подходящие для указанной культуры или нейтральной культуры. Убедитесь, что "pipe.resources" был правильно внедрен или связан с сборкой "System.Management.Automation" во время компиляции, или что все требуемые сателлитные сборки являются загружаемыми и полностью подписаны. В строке:1 символ: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

Во всех случаях результат один и тот же.

Почему и как поставить диагноз?

1 ответ

Решение

Я также заметил проблемы с использованием invoke-sqlcmd для объединения команд invoke-sqlcmd через конвейер. Обходной путь, который, кажется, решает проблему, сохраняет выходные данные первой команды в переменную, а затем направляет выходные данные к следующему вызову invoke-sqlcmd.

$databases = Invoke-Sqlcmd "select * from sys.databases"  
$databases | % { Invoke-Sqlcmd "select 1" }
Другие вопросы по тегам