2016-01-18 3 views
0

Дневные Folks,Visual Studio 2013 SSIS OLE DB Destination (Access с помощью диспетчера подключений) Команда SQL Выпуск

Мы используем Visual Studio 2013 и иметь пакет SSIS, который мы создаем. У нас есть простая задача потока данных, которая по существу берет некоторые данные из SQL и перетаскивает их в базу данных Access. Он имеет три элемента потока DFD:

У меня есть источник OLE DB (получает SQL через оператор select) -> Преобразование данных (преобразование типов данных SQL для доступа) -> Назначение OLE DB (база данных доступа)

Шаги по выбору SQL и его преобразование отлично работают.

У нас есть команда SQL, которую мы используем для обновления базы данных Access 2010.

Мы попытались запустить и создать простой оператор UPDATE, чтобы обновить пару полей с жестко закодированными данными, но это не обновляется. Мы также попытались создать хранимую процедуру и затем выполнить ее в командной строке SQL в редакторе назначения OLE.

Мы можем видеть из сообщений в сети, что мы можем создать процедуру доступа 2010 и использовать ее. Мы также используем Native OLE DB \ Microsoft Office 12.0 для доступа к поставщику OLE DB Database Engine. Это соединение успешно проверяется.

Мы можем написать инструкцию SELECT в командной строке SQL, и это отталкивает данные. У нас просто проблема с процедурой UPDATE и Create. В свою очередь мы не можем заполнить Mappings. отображения отображают поле назначения, но здесь не отображаются поля.

У нас был хороший облик в Интернете, но мы изо всех сил пытаемся найти решение.

Ниже приведен пример кода в форме заявления об обновлении, которое мы пытаемся получить.

UPDATE ReferenceFields 
    INNER JOIN Addresses 
    ON ReferenceFields.ID = Addresses.ID 
      SET ReferenceFields.Reference2 =CustomerName, 
       ReferenceFields.Reference3 = telephone   
WHERE Addresses.UPRN = 12345678910 

Если я Разбираем запрос он является успешным, но когда я выбираю Отображения отображается предупреждение ....

Ошибка в задаче потока данных [OLE DB назначения [136]]: Нет колонки информация была возвращена с помощью команды SQL

https://msdn.microsoft.com/EN-US/library/office/ff845861.aspx

https://msdn.microsoft.com/en-us/library/ms141044.aspx

SSIS OLEDB destination with SQL command (Insert if not exists)

ответ

-1

Через некоторое время мне удалось ответить на этот вопрос сам.

Я добавил уникальные параметры для каждого поля, которое мне нужно обновить, и использовал символ @, чтобы установить это.

UPDATE ReferenceFields 
    INNER JOIN Addresses 
    ON ReferenceFields.ID = Addresses.ID 
      SET ReferenceFields.Reference2 = @CustomerName, 
       ReferenceFields.Reference3 = @telephone 
WHERE UPRN = @UPRN 

Это пробегает код и обновляет базу данных MS Access.

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