Я разработал один главный пакет (Main.dtsx) и 3 дочерних пакета (Processor.dtsx). Примечание. Код одинаковый для всех дочерних пакетов, который захватывает файлы из исходного местоположения и процесса. Чтобы оптимизировать производительность, я хочу, чтобы все эти 3 дочерних пакета должны запускаться одновременно на 10000 файлах таким образом, чтобы первый ребенок выбирал 1-й файл и запускал выполнение, в то время как секунда будет отображать второй файл и так далее. Пожалуйста, поделитесь этим кодом, если у вас есть. Я попробовал параметр «MaxConcurrentExecutables», но в этом случае все компоненты получают доступ к тому же файлу, который не ожидается.Параллельное выполнение в ssis
-1
A
ответ
0
Это не может быть сделано с помощью Loop Foreach, но вы можете выполнить задачу с задачей сценария:
- Добавить 3 строковые переменные для хранения имен файлов (т.е. ФАЙЛА1 File2, file3)
- Передайте переменные из основного пакета в каждый дочерний пакет.
- В каждом дочернем пакете настройте выражение в диспетчере соединений файлов, чтобы использовать этот параметр в качестве строки подключения
- В конце каждого пакета убедитесь, что файл перемещен из исходной папки или переименован в такой что он будет проигнорирован в последующих циклах.
- Настройте цикл For, который завершится, когда все файлы будут обработаны. Вы можете добавить логическую переменную в пакет, например «ProcessingIsAllDone», а затем установить это в задаче сценария.
- В верхней части цикла For добавьте задачу сценария и соедините задачи выполнения пакета с прецедентными ограничениями.
Используйте сценарий ниже, чтобы установить переменные
using System; using System.Data; using Microsoft.SqlServer.Dts.Runtime; using System.Windows.Forms; using System.IO; namespace ST_e4ccd9cfaa4847ff86ec88c215c1961c { [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute] public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase { public void Main() { DirectoryInfo sourceDirectory = new DirectoryInfo(@"c:\temp"); int loops = 3; foreach (FileInfo sourceFile in sourceDirectory.GetFiles("*.txt")) { if (loops == 0) { break; } string variableName = String.Format("File{0}", loops); Dts.Variables[variableName].Value = sourceFile.FullName; loops--; } if (sourceDirectory.GetFiles("*.txt").Length <= 3) { Dts.Variables["ProcessingIsAllDone"].Value = true; } Dts.TaskResult = (int)ScriptResults.Success; } #region ScriptResults declaration enum ScriptResults { Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success, Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure }; #endregion } }
Смежные вопросы
- 1. Выполняет ли параллельное выполнение в SSIS правильно?
- 2. SSIS - Параллельное выполнение задач - насколько это эффективно?
- 3. Параллельное выполнение в python
- 4. Параллельное выполнение в Gradle
- 5. Параллельное выполнение в
- 6. Параллельное выполнение в MATLAB
- 7. Параллельное выполнение в узле
- 8. SSIS - Параллельное выполнение одного и того же пакета
- 9. Appium - Параллельное выполнение (сетка)
- 10. Параллельное выполнение приложения .net
- 11. node.js параллельное выполнение
- 12. Haskell спекулятивное параллельное выполнение
- 13. Параллельное и синхронное выполнение
- 14. Непрерывное параллельное выполнение Python
- 15. параллельное выполнение задания mapreduce
- 16. параллельное выполнение AsyncTask
- 17. Упорядоченное параллельное выполнение
- 18. AsyncTasks параллельное выполнение
- 19. ExecuteSqlCommand параллельное выполнение
- 20. Juint параллельное выполнение
- 21. Параллельное выполнение команды Unix?
- 22. IntentService параллельное выполнение
- 23. Весна Параллельное выполнение метода
- 24. Зависимость и параллельное выполнение
- 25. Параллельное выполнение с pthread_cond_broadcast?
- 26. Параллельное выполнение методов
- 27. Параллельное выполнение методов класса
- 28. Параллельное выполнение PHP
- 29. Параллельное выполнение сценария powershell
- 30. Параллельное выполнение нескольких сценариев