Компонент сценария служб SSIS не может загрузить сборку, пока он не будет открыт вручную

Я создаю проект SSIS через Biml (используя текущую версию BimlExpress для страницы Varigence BimlExpress), который использует компонент сценария в Задаче потока данных. Проект создается без проблем, однако ошибки, когда он попадает в компонент скрипта:

Не удалось загрузить файл или сборку "Microsoft.SqlServer.DTSPipelineWrap, версия =14.100.0.0, культура = нейтральная, PublicKeyToken=89845dcd8080cc91" или одна из ее зависимостей. Система не может найти указанный файл.

в ScriptMain.PreExecute() в Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PreExecute()

Я вижу эту DLL в GAC, и когда я пытаюсь добавить ссылку вручную, SSIS заявляет, что я не могу добавить ее, так как она уже включена в проект.

Однако, если я открою компонент Script и вручную Build это - но ничего не изменить - задача потока данных будет проходить без проблем.

Чтобы уточнить, я знаю, что я ничего не изменил, так как я воссоздаю этот проект из Biml каждый раз, когда я хочу протестировать новый подход, который обеспечивает согласованную базовую линию.


Кто-нибудь знает, почему компонент скрипта, который включает в себя ссылку на DLL GAC, будет работать только при ручном Built но не заранее?

Я использовал этот точный Biml прежде без проблем, хотя в другой среде. Работал с использованием Visual Studio 2012 для экземпляра SQL Server 2016, но не для Visual Studio 2015 (нацелен на 2012 год) для экземпляра SQL Server 2016.

Для дальнейшего контекста я также протестировал этот вывод проекта SSIS, ориентированного на SQL Server 2012, 2014 и 2016, с точно таким же сообщением об ошибке.


Обновить

Это определенно является проблемой версии dll в проекте, как вывод из BimlExpress, в том случае, если я вручную создаю v4.0_14.100.0.0__89845dcd8080cc91 папка с версией 13 dll внутри на C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.DTSPipelineWrap компонент скрипта теперь выдает следующие ошибки:

System.InvalidCastException: невозможно преобразовать COM-объект типа "System.__ComObject" в интерфейс типа "Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100". Эта операция завершилась неудачно, поскольку не удалось выполнить вызов QueryInterface для компонента COM для интерфейса с IID '{ID удален на всякий случай}' из-за следующей ошибки: Такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).

в Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(исключение e)

в Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PreExecute()

в Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPreExecute(оболочка IDTSManagedComponentWrapper100)

2 ответа

Я думаю, что ваша проблема может быть связана с версией Express.

Посмотрите на соответствующей странице различия между версиями Express и BimlStudio (Сравнительная таблица функций под кнопкой "Сравнить с BimlStudio"):

https://www.varigence.com/BimlExpress

У меня была такая же проблема с компонентом профилирования данных. Я использовал следующий пост.

ssis-data-profiling-task-editor-return-коды-ошибок

Другие вопросы по тегам