Я могу создать пакет программно, когда дело доходит до 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", чтобы указать на сборкув бен, но даже это не помогло.