SSIS и 64-разрядное ядро ​​базы данных Microsoft Access

На нашем сервере разработки установлен 64-разрядный SQL Server 2008 R2 с SSIS. Чтобы иметь возможность импортировать файлы XLSX напрямую из T-SQL (через OPENROWSET), мы установили на сервере разработки файл Microsoft Access Database Engine Redistributable 64-bit. На сервере уже установлена ​​32-битная версия, поэтому мы установили ее с ключом /passive.

После этого наши существующие пакеты перестали работать. Один из них сообщает

Шаг не генерировал никаких выходных данных. Возвращаемое значение было неизвестно. Код завершения процесса был -1066598274. Шаг не удался.

Просто интересно, настроил ли кто-нибудь еще свой сервер так, чтобы он мог использовать файлы OPENROWSET в XLSX, а также иметь SSIS на том же сервере. Или кто-то знает, невозможна ли такая конфигурация?

Редактировать: я должен добавить, что сбойные пакеты запускаются из задания агента SQL. Когда я подключаюсь к диспетчеру служб Integration Services сервера через SQL Server Management Studio и запускаю пакет (перейдя к пакету, щелкнув его правой кнопкой мыши и выбрав «Выполнить пакет»), он выполняется успешно.


person Steve    schedule 03.11.2014    source источник
comment
Запустить его, щелкнув правой кнопкой мыши в диспетчере служб SSIS, и запустить его в агенте SQL очень разные. Учетная запись пользователя другая, и место запуска пакета другое. Когда вы щелкаете правой кнопкой мыши и запускаете, вы вошли в систему на сервере или находитесь на удаленном клиенте? Получаете ли вы какие-либо ошибки «не удалось установить соединение» при сбое? Является ли это соединение excel единственным соединением?   -  person Nick.McDermaid    schedule 24.04.2015
comment
Что происходит, когда вы укажите в командной строке DTEXEC в агенте SQL, чтобы использовать 32-разрядную или 64-разрядную версию? См. также здесь возможные другие способы. чтобы выбрать, какая версия выполняется.   -  person Bacon Bits    schedule 24.04.2015
comment
@Nick.McDermaid Когда вы щелкаете правой кнопкой мыши и запускаете, вы вошли в систему на сервере или находитесь на удаленном клиенте? На удаленном клиенте. Получаете ли вы какие-либо ошибки «не удалось установить соединение» при сбое? Нет. Является ли это соединение с Excel единственным соединением? Нет. Проблема на рабочем сервере, у нас там много подключений.   -  person Igor Borisenko    schedule 27.04.2015
comment
@BaconBits Использование 32-разрядной среды выполнения уже было включено до получения ошибки.   -  person Igor Borisenko    schedule 27.04.2015
comment
Когда вы щелкаете пакет правой кнопкой мыши и запускаете его на узле SSIS в SSMS, вы запускаете его на клиенте от имени себя. Вот почему это работает. Я предлагаю вам вернуться к исходному коду, войти в SSMS и запустить свой OPENROWSET T-SQL прямо там. Любая ошибка? Если вы используете OPENROWSET только для получения данных из Excel, то битность DTExec не должна иметь значения, это SQL Server, который обращается к драйверу ACE, а не к SSIS.   -  person Nick.McDermaid    schedule 27.04.2015


Ответы (3)


Лично я отказался от попыток поддержать этот сценарий - я думаю, что установка «/passive» — это хак, который на самом деле не работает и обычно ломает вашу другую установку ADE. Я бы полностью удалил ADE, а затем переустановил бы только 32-разрядную версию. Затем я заставлю все пакеты, запускаемые через агент SQL, выполняться как 32-разрядные (как описано Брайаном).

Выполнение этого процесса дает вам некоторую надежду на устранение проблем, поскольку вы можете открыть свой пакет в Visual Studio, и он будет использовать тот же 32-разрядный драйвер. Вы также будете использовать согласованный драйвер при выполнении из SSMS (также 32-разрядной).

Да, производительность может снизиться, но производительность служб SSIS обычно в некоторой степени ограничена скоростью ввода-вывода или сетью, а не только пропускной способностью ядра.

person Mike Honey    schedule 27.04.2015

Да, это возможно. Вы должны указать, чтобы использовать 32-битную среду выполнения на шаге задания. Откройте каждый шаг задания, на котором выполняется один из ваших пакетов SSIS, и нажмите «Параметры выполнения». Установите флажок внизу «Использовать 32-битную среду выполнения».

person Brian Pressler    schedule 24.04.2015
comment
Я сделал это до получения ошибки. На самом деле использование 32-разрядной среды выполнения устраняет другую ошибку: SSIS DTS_E_OLEDB_EXCEL_NOT_SUPPORTED. - person Igor Borisenko; 27.04.2015

У меня было "Шаг не сгенерировал никаких выходных данных. Возвращаемое значение было неизвестно. Код завершения процесса был -1066598274. Шаг также не удался".
Я нашел обходной путь для себя: я переключился с использования xlsx на xls , и ошибка больше не возникает.

person Igor Borisenko    schedule 30.04.2015