Компонент сценария служб 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"):
У меня была такая же проблема с компонентом профилирования данных. Я использовал следующий пост.