2016-07-11 4 views
1

У пары моих сотрудников возникли проблемы с подключением к базе данных MS Access 2010, защищенной паролем, из SSIS. Я решил попытаться устранить эту проблему.Не удается подключиться к базе данных MS Access 2010 из пакета SSIS на SQL Server

Чтобы упростить ситуацию, я создал новую базу данных MS Access 2010 с одной таблицей и одной строкой без защиты паролем. Я скопировал эту базу данных, обновил данные в одной строке, чтобы я мог различать исходный код и затем применял пароль. Обе базы данных на одном сетевом пути, для которых я использую полный путь UNC.

Я создал два пакета SSIS, по одному для каждой базы данных. Все пакеты делают, считываются из одной таблицы и записывают данные в CSV. Для моего подключения к базе данных Access я использую поставщик OLE DB для Microsoft Office 12.0 Access Database. Для подключения базы данных, защищенного паролем, я помещаю пароль в поле Jet OLEDB: Database Password.

При работе на моей машине через Visual Studio оба пакета SSIS работают как ожидалось и записывают данные из таблицы базы данных Access в файл CSV в том же месте, что и база данных. Однако, когда я загружаю пакеты и создаю SQL-задание для каждого из них, то один без пароля работает, но тот, у которого есть пароль, нет.

Здесь ошибка я получаю (когда пользователь неподвижную вне) ...

Executed as user: XXXXXX\XXXXXXXX. Microsoft (R) SQL Server Execute Package Utility Version 10.50.4000.0 for 32-bit Copyright (C) Microsoft Corporation 2010. All rights reserved.  
Started: 1:42:02 PM 

Error: 2016-07-11 13:42:03.94  
Code: 0xC0202009  
Source: Package1 Connection manager "TestPassword"  
Description: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. 

Error code: 0x80004005. An OLE DB record is available. 
Source: "Microsoft Office Access Database Engine" 
Hresult: 0x80004005 
Description: "Cannot open database ''. It may not be a database that your application recognizes, or the file may be corrupt.". End Error 

Error: 2016-07-11 13:42:03.94  
Code: 0xC020801C  
Source: Data Flow Task OLE DB Source [1]  
Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "TestPassword" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed. End Error 

Error: 2016-07-11 13:42:03.95  
Code: 0xC0047017  
Source: Data Flow Task SSIS.Pipeline  
Description: component "OLE DB Source" (1) failed validation and returned error code 0xC020801C. End Error 

Error: 2016-07-11 13:42:03.95  
Code: 0xC004700C  
Source: Data Flow Task SSIS.Pipeline  
Description: One or more component failed validation. End Error 

Error: 2016-07-11 13:42:03.95  
Code: 0xC0024107  
Source: Data Flow Task  
Description: There were errors during task validation. End Error 

DTExec: The package execution returned DTSER_FAILURE (1). 

Started: 1:42:02 PM Finished: 1:42:03 PM Elapsed: 1.903 seconds. The package execution failed. The step failed. 

Любые предложения?

+0

Мы считаем, что проблема в том, что сервер имеет устаревший драйвер. Я отправлю комментарий, если это окажется проблемой. – nscheaffer

ответ

2

У меня была очень похожая проблема с диспетчером подключений ADO Net, пытающимся подключиться к удаленной базе данных Azure.

Вы можете попробовать назначить полную строку соединения, включая учетные данные, в диспетчер соединений с помощью выражения и переменной. Есть более безопасные способы назначения этой информации во время выполнения, но это быстрый способ тестирования.

Одна из основных причин отказа этого типа развертывания заключается в том, что пароль был зашифрован для вашего компьютера при настройке диспетчера соединений. Как только пакет перемещается на производственный компьютер, он не может расшифровать пароль, который сохраняется в диспетчере соединений. Поэтому у пакета никогда не будет доступа к вашей защищенной БД.

0
  1. ли ваша безопасность пакет установлен EncryptSensitiveWithPassword
  2. При развертывании пакета убедитесь, что вы повторно ввести имя пользователя и пароль (или полную строку подключения) для подключения.
+0

Где я могу поместить пароль для шифрования пакета? Всякий раз, когда я помещаю что-то в свойство пакета PackagePassword, он, кажется, исчезает. – nscheaffer

+0

На странице свойств PackagePassword нажмите кнопку «...» справа. Затем вы получите диалоговое окно для ввода и повторного ввода пароля. Вы правы, хотя - это не очень интуитивно! – BIDeveloper

+0

Когда я это делаю, все равно получаю пустое значение свойства. Похоже, это должно быть «********» или что-то в этом роде.И если я получу его, чтобы придерживаться того, как и где указать значение пароля на моем SQL Server? – nscheaffer

 Смежные вопросы

  • Нет связанных вопросов^_^