Ошибка создания программного пакета SSIS 2019 - PullRequest
2 голосов
/ 29 апреля 2019

Я могу создать пакет программно, когда дело доходит до ssis 2016, но когда я пытаюсь создать пакет программно, я получаю ошибку ниже.

не удалось загрузить файл или сборку 'microsoft.sqlserver.dtsruntimewrap, версия = 15.100.0.0, культура = нейтральная, publickeytoken = 89845dcd8080cc91 'или одна из ее зависимостей.система не может найти указанный файл. "

Создан образец пакета и загружен в папку ниже одного места.

Я заметил, что Microsoft.SqlServer.DTSRuntimeWrap для 2016 существует в

C:\Windows\Microsoft.NET\assembly\GAC_32\Microsoft.SqlServer.DTSRuntimeWrap\v4.0_13.0.0.0__89845dcd8080cc91

, но ssis 2019, который является частью установки Visual Studio 2017, не был установлен в GAC_32, но установлен в

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn\Microsoft.SQLServer.DTSRuntimeWrap.dll

Итак, установил его в gac, используя gacutil, но теперь я получаю сообщение об ошибке ниже.

Microsoft.SqlServer.Dts.Runtime.DtsComException: «Не удается найти класс служб Integration Services. Убедитесь, что службы Integration Servicesправильно установлена ​​на компьютере, на котором выполняется приложение. Кроме того, убедитесь, что установлена ​​64-разрядная версия служб Integration Services, если вы используете 64-разрядное приложение.

Обновление:

Я понимаю, что установка SSIS (MsDtsServer150) решит проблему, но это действительно не нужно для запуска ssis в 32-битном режиме, так как мое приложениеработающий в 32-битном режиме, он должен работать без установки SSIS, аналогично мастеру импорта экспорта в SSMS.

Провел немного больше исследований, мое приложение под управлением SSIS 2017 в 32-битном режиме работало, хотя SSIS не установлен, потому чтоSSMS 17. * добавил необходимые библиотеки DLL, но SSMS 18.0 не установил необходимые библиотеки DLL и мастер импорта экспорта отключен в ssms 18.0, поэтому мое приложение больше не работает.

Я могу запускать пакеты SSIS из Visual Studio, поэтомуМой главный вопрос: как я могу запустить его в visual studio без dll в gac?Как я могу использовать то же самое?

Вот подробное объяснение:

Мы можем установить SSIS, используя установщик Sql server * (например, SQL Server Developer Edition) для SSIS 32-разрядных и 64-разрядныхбит для любого приложения, которое вызывает DTSRuntime.Application () для работы, но если SSIS не установлен с использованием установщика сервера sql, а вместо этого установлена ​​только SSMS, он все равно добавит 32-разрядную версию в gac и также создаст «C: \ Program Files (x86)) \ Microsoft SQL Server \ 140 "папка со всеми необходимыми dll-файлами в папке DTS, благодаря чему мы можем запустить SSIS в 32-битном режиме, вызвав DTSRuntime.Application () с проектом, настроенным на 32-битный режим.

Visual studio создает версии dll ex: 15.100.0.0 для 15.0.0.0 и каким-то образом может использовать dll в той же папке, чтобы использовать то же самое, что я пытался создать с помощью редиректа привязки в app.config, как показано ниже, но это не так.t work

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <dependentAssembly>
        <assemblyIdentity name="Microsoft.SqlServer.ManagedDTS" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
        <bindingRedirect oldVersion="11.0.0.0-15.0.0.0" newVersion="15.100.0.0"/>
        <codeBase version="15.100.0.0" href="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn\Microsoft.SqlServer.ManagedDTS.dll"/>
      </dependentAssembly>
</assemblyBinding>

Даже пытался изменить href на ". \ Microsoft.SqlServer.ManagedDTS.dll", чтобы указать на сборкув бен, но даже это не помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...