Параллель в задании SQL Server

#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 ?