2015-02-26 4 views
0

Я создал настраиваемый диспетчер соединений для SSDT BI (SSIS), который будет подключаться к базе данных Oracle, используя библиотеку доступа к данным Oracle (Oracle.ManagedDataAccess.dll).SSDT BI Менеджер пользовательских подключений AccessViolationException

На моей машине разработки этот диспетчер соединений и компонент конвейера «источник данных», который идет с ним, будут работать нормально. Когда я развертываю пакет на сервере и пытаюсь его запустить, пакет всегда будет работать с «AccessViolationException».

Сервер работает под управлением Windows Server 2012R2 с Sql Server 2014

До сих пор, отладка не дает мне много информации. Когда я ступаю по моему коду, мой пустой конструктор по умолчанию получает вызов, но ничего больше. Как только он выйдет из конструктора, я получаю исключение. Никакие другие методы внутри моего пользовательского класса никогда не называются.

Вот информация, которая сбрасывается в журнал событий Windows.

Применение: ISServerExec.exe Framework версии: v4.0.30319 Описание: Процесс был прекращен из-за необработанного исключения. Exception Информация: System.AccessViolationException Stack: в Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSPackagePersist100.LoadPackageFromXML (System.Object, Boolean, Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSEvents100) в Microsoft.SqlServer. Dts.Runtime.Wrapper.IDTSPackagePersist100.LoadPackageFromXML (System.Object, Boolean, Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSEvents100) в Microsoft.SqlServer.Dts.Runtime.Package.LoadFromXML (System.String, Microsoft.SqlServer. Dts.Runtime.IDTSEvents) в Microsoft.SqlServer.Dts.Runtime.Project.LoadPackage (Microsoft.SqlServer.Dts.Runtime.IProjectStorage, Microsoft.SqlServer.Dts.Runtime.Package, System.String, Microsoft.SqlServer.Dts. Runtime.IDTSEvents) в Microsoft.SqlServer.Dts.Runtime.PackageItem.Load (Microsoft.SqlServer. Dts.Runtime.IDTSEvents) в Microsoft.SqlServer.Dts.Runtime.PackageItem.LoadPackage (Microsoft.SqlServer.Dts.Runtime.IDTSEvents) в Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ISServerExecutionEvents.LoadPackage (Microsoft.SqlServer. Dts.Runtime.PackageItem) на Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ProjectOperator.StartPackage() в Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ProjectOperator.PerformOperation() в Microsoft.SqlServer.IntegrationServices.Server. ISServerExec.ExecuteMain.Main (System.String [])

ответ

0

Я столкнулся с аналогичным вопросом раньше. Резолюцией был агент сервера sql, не имеющий правильных разрешений для использования файла dll.

Возможные ошибки:

  • Проверить расположение DLL на сервере.
  • Подтвердить разрешения на использование dll.

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

+0

Я дал учетную запись службы, используемую для запуска всех пакетов .dtsx, полного доступа администратора к серверу и по-прежнему имеет такую ​​же проблему. Есть ли вероятность, что вы сможете точно узнать, что изменилось? – nitedmn

+0

Я спросил своего администратора базы данных, он ответил: «DLL не была зарегистрирована на хостинге SQL Server. Была установлена ​​собственная установка для исходной системы, к которой обращался код C#». –

+0

Вам это помогло? –

0

можете ли вы набросать для меня схему SSIS-пакета?

У меня есть подозрение, что эта проблема может возникнуть при вложении объектов контейнера последовательности в SSIS 2008. Когда вы создаете пакет с SQL Business Intelligence Development Studio 2008 и встраиваете контейнеры последовательностей, а затем обновляете пакет до SSIS 2012 или выше , а затем откройте пакет в SQL Server Data Tools 2012 или выше, пакет не будет отображаться так же, как в 2008 году. Внешний контейнер последовательности не будет привязан ни к чему.