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

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

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

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

Invoke-Sqlcmd: не удалось найти ресурсы, подходящие для указанного или нейтрального языка и региональных параметров. Убедитесь, что «pipeline.resources» правильно встроен или связан со сборкой «System.Management.Automation» во время компиляции, или что все необходимые вспомогательные сборки загружаются и полностью подписаны. В строке: 1 символ: 1 + Invoke-Sqlcmd «выбрать * из sys.databases» | % {+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidResult : (:) [Invoke-Sqlcmd], MissingManifestResourceException + FullyQualifiedErrorId: ExecutionFailed, Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

Надоело это:

  • как с ISE, так и с командной строкой
  • оба с повышенными правами ("запускать от имени администратора"), а не
  • против SQL 2012 и SQL 2008
  • из Windows 8 и из Server 2008

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

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


person Andrew Savinykh    schedule 06.08.2013    source источник
comment
Я пытаюсь понять значение select 1. Первый Invoke-Sqlcmd у меня работает, и я могу передать его по конвейеру для печати имен баз данных. Однако я вижу ту же ошибку при использовании select 1   -  person Srikanth Venugopalan    schedule 06.08.2013
comment
@SrikanthVenugopalan Я считаю, что это комбинация того и другого. Выбор 1, очевидно, работает нормально сам по себе.   -  person Andrew Savinykh    schedule 06.08.2013


Ответы (1)


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

$databases = Invoke-Sqlcmd "select * from sys.databases"  
$databases | % { Invoke-Sqlcmd "select 1" }
person Chad Miller    schedule 06.08.2013
comment
Ага, вот что у меня получилось. Похоже, Invoke-Sqlcmd не совсем реентерабелен, а? - person Andrew Savinykh; 07.08.2013
comment
Есть еще несколько проблем с invoke-sqlcmd. Более серьезная проблема связана с обработкой ошибок, когда invoke-sqlcmd незаметно проглатывает ошибки. С осторожностью используйте invoke-sqlcmd: connect.microsoft.com/SQLServer/feedback/details/779320/ - person Chad Miller; 07.08.2013
comment
Да, я заметил и другие проблемы. - person Andrew Savinykh; 07.08.2013