Alex Molskiy
Дата: 17.04.2015 00:50:47
Для загрузки данных c sybase ASE 15.7 в MS SQL используем SSIS.
Изначально пакет был создан в VS 2010 и успешно работал на MS SQL 2012, после этого был развернут новый MS SQL 2014 и VS2013, пакет бы перенесен на новый сервер и тут была замечена одна неприятная особенность.
Пакет содержит 26 параллельных DataFlow блоков, которые используют один объект Connection Manager, который в свою очередь использует Sybase ASE ODBC драйвер.
Если запускать пакет из VS2010 и MSSQL 2012, то каждый DataFlow при работе создает одно подключение к базе Sybase и после завершения закрывает соединение, таким образом изначально создается 26 соединений, которые в процессе работы уменьшаются до 0. По мониторингу процессов видно, что все соединения создаются от процесса Devenv.exe
Если запускать этот же пакет из VS2013 и MSSQL 2014, то сразу при открытии пакета в студии, он создает 26 соединений от devenv.exe, при запуске пакета сразу создается еще 26 соединений, но уже от процесса DtsDebugHost.exe, в процессе работы от этого же процесса создается дополнительное кол-во соединений, при этом каждый раз разное, при этом 80% всех соединений находится в статусе sleep.
Вроде бы не ошибка, но проблема в том, что кол-во соединений с Sybase ограничено лицензией и выполнение пакета создает большее кол-во соединений, чем разрешено лицензией и выполнение пакета прекращается с ошибкой.
Дополнительно отмечу, что RetainSameConnection установлен в false и не играет роли в данной ситуации.
Окружение серверов полностью идентичное.
С чем связано такое поведение SSIS на 2014 сервере и можно ли как-то его заставить вести себя как в MSSQL 2012?
Владислав Колосов
Дата: 17.04.2015 15:50:26
Сиквел на виртуалке или Sybase? Ситуация похожа на то, что коннекты рвутся. Проблема уровня транспорта, а не пакетов или серверов.