Я ничего не знаю о BizTalk. Итак, я не знаю, что он может или не может сделать. Что касается SSIS, мои предложения будут следующими:
Если у вас много кода бизнес-логики, встроенного в Script Task / Script Component. Я бы посоветовал вам создать проект библиотеки классов C # и зарегистрировать DLL в GAC для ссылки на него в пакете служб SSIS. Сделайте DLL универсальной, чтобы для ее реализации в пакете служб SSIS требовалось совсем немного кода. Таким образом, вы также можете повторно использовать логику.
Что касается поиска с использованием связанного сервера, я надеюсь, что я правильно понимаю. Вы говорите, что у вас есть связанные серверы, указывающие на другие экземпляры, и ваш поиск указывает на эти связанные серверы? Если базы данных находятся на экземплярах SQL Server, почему бы не создать строку подключения, непосредственно указывающую на базу данных, и выполнить поиск? Это бы сильно ускорило процесс.
Используете ли вы много преобразований команд OLE DB в вашем пакете? Если это прямая вставка, попробуйте использовать OLE DB Destination, чтобы ускорить процесс.
Посмотрите на этот SO-ответ Как я могу загрузить большой плоский файл в таблицу базы данных с помощью служб SSIS? , где я объяснил, как можно разделить преобразование строк на несколько пунктов назначения для увеличения скорости до процесса.
Поскольку вы пишете ошибки в специально разработанной базе данных, я думаю, что было бы неплохо иметь структуру таблицы подробных заголовков для хранения сообщений об ошибках вместо того, чтобы создавать несколько таблиц ошибок. Я предпочитаю держать его более общим, чтобы логика могла приспособиться к будущим изменениям области действия.
Надеюсь, это даст вам некоторое представление.
Редактировать 1:
У меня было ощущение, что вы собираетесь сказать, что база данных поиска - это DB2. Тем не менее, связанный сервер может замедлить пакет. Преобразование «Уточняющий запрос» поддерживает запросы напрямую к базе данных DB2, а также к SQL Server и Oracle ( MSDN ). Вы можете избежать поиска через связанный сервер.
Как только проект библиотеки классов C # скомпилирован в dll, вы также можете ссылаться на него из VB.NET. Пока ваша DLL ориентирована на .NET Framework 2.0, я думаю, что вы должны хорошо ссылаться на нее в SSIS 2005.
Кроме того, есть и другие способы улучшения в зависимости от того, какая логика встроена в код .NET. Эта логика может быть записана в хранимой процедуре? В этом случае загрузите данные в промежуточную таблицу, запустите хранимую процедуру, которая применяет логику к данным этапа, а затем перенесите данные в таблицу назначения.