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

Изпълнявам следната команда (най-малкият възпроизводим пример, който мога да измисля):

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

Получавам следната грешка:

Invoke-Sqlcmd: Не може да се намерят ресурси, подходящи за посочената култура или неутралната култура. Уверете се, че "pipeline.resources" е бил правилно вграден или свързан в сборка "System.Management.Automation" по време на компилиране или че всички необходими сателитни сборки са зареждаеми и напълно подписани. На ред:1 char: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 Вярвам, че е комбинация от двете. Select 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 не е съвсем re-entrant, а? - 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