#sql-server #powershell
#sql-сервер #powershell
Вопрос:
У меня есть рабочий процесс в PowerShell, и он выполняет функции параллельно. Я пытаюсь сделать это в задании агента SQL Server, но я получаю сообщение об ошибке, кто-нибудь знает, как это исправить?
workflow StartPar {
parallel {
fun1
fun2
fun3
}
}
StartPar
Ошибка в задании SQL Server:
Сценарий задания обнаружил следующие ошибки. Эти ошибки не остановили скрипт:
Необработанное исключение: Система.Исключение FormatException: Индекс (основанный на нуле) должен быть больше или равен нулю и меньше размера списка аргументов.
в System.Text.StringBuilder.AppendFormatHelper (поставщик IFormatProvider, строковый формат, аргументы ParamsArray)
в системе.Строка.FormatHelper (поставщик IFormatProvider, строковый формат, аргументы ParamsArray)
в системе.Строка.Формат (поставщик IFormatProvider, формат строки, аргументы Object[])
в Microsoft.SQLServer.Management.PowerShell.SqlPowerShell.Получите сообщение об ошибке (ErrorRecord ErrorRecord)
в Microsoft.SQLServer.Management.PowerShell.SqlPowerShell.HandleAgentJob(RunspaceConfiguration config)
в Microsoft.SQLServer.Management.PowerShell.SqlPowerShell.Main(Строка[] аргументов).Код завершения процесса 255. Шаг не удался.
Если я запускаю функции
fun1
fun2
fun3
Я не получаю никаких ошибок.
Что я делаю не так?
Комментарии:
1. Что делает
fun1
,fun2
иfun3
? Они записывают или считывают из общих / глобальных переменных? Пожалуйста, опубликуйте фактический код, если это возможно2. Они собирают данные из таблиц mysql, переносят их во временную таблицу, где fun1 — это где name = fun1, fun2 — это где name = fun2 и т.д., А Затем массово копируют на сервер mssql
3. Пожалуйста, предоставьте функции с параметрами. Проблема может быть в области видимости аргументов и т.д. Ваш пример выглядит нормально.
4. Я попытался выполнить рабочий процесс -Parallel2 {параллельный {1 1 } } ошибка та же, но в ps все работает, ошибка в задании. Может быть, параллельный там не работает? Есть ли другой способ запускать функции параллельно?
5. @ziafok настроен ли этап задания как «Этап задания PowerShell»? Я подозреваю, что
sqlps
логика в SQL Server не поддерживает рабочие процессы, поэтому, может быть, попробуйте поместить свой код в отдельный скрипт, а затем в обычную командную строку запустить шаг заданияpowershell.exe -ExecutionPolicy Bypass -File C:pathtomysql_workflow_script.ps1
?