SSIS OLE с использованием DBCommand для вызова функции tsql - PullRequest
1 голос
/ 20 августа 2010

Я импортирую данные Oracle в SQL Server.После того, как мой источник OLE DB, который выполняет запрос для сбора данных для обработки, я пытаюсь как-то вызвать функцию TSQL для значения поля ...

У меня есть поток данных SSIS, где у меня есть datetimeстолбец с именем DepartureDateGMT и целочисленный столбец с именем DepartureTimeZoneKey.

У меня есть функция TSQL с именем dbo.udf_ConvertFromGMT (,), которая возвращает дату и время

Я пытаюсь создать команду OLE DB, которая заполняет столбец с именем DepartureDate, в котором содержится значение вызова:

dbo.udf_ConvertFromGMT (DepartureDateGMT, DepartureTimezoneKey)

для каждой строки в потоке данных служб SSIS.

Я не обновляю / не вставляю в существующую таблицу, я просто пытаюсь сохранить результат в столбце DepartureDate каждой строки набора данных потока данных

Я много пробовалтакие вещи, как

Exec?dbo.udf_ConvertFromGMT (?,?)

ВЫБРАТЬ dbo.udf_ConvertFromGMT (DepartureDateGMT, DepartureTimezoneKey)

dbo.udf_ConvertFromGMT (?,?)

DARSETE_DARSET_DARSET_DREET_DARSET_REET_REET_DARSET_DREET_REET_DARSET_REET_REET_REET_REET_REET_REET_REET_REET_REET= dbo.udf_ConvertFromGMT (?,?) *1023*

Но я получаю: Синтаксическая ошибка, нарушение прав доступа или другая неспецифическая ошибка

Я лаю не на том дереве?Я пытался использовать DerivedColumn, но он не позволяет вызывать функцию TSQL.

Спасибо!

1 Ответ

1 голос
/ 20 августа 2010

Команда OLE DB в задаче «Поток данных» предназначена для запуска оператора SQL один раз для каждой строки в потоке данных.Работает ли это для вас или нет, вы не можете быть довольны производительностью, если нужно обработать много строк.Вы изучили язык выражений служб SSIS, чтобы узнать, можно ли переместить функциональность вместо вызова функции в компонент «Производный столбец»?

Если необходимо использовать команду OLE DB, вы можете попробовать изменить SQLфункция хранимой процедуры SQL.В команде OLE DB вы можете вызвать такую ​​процедуру

EXEC dbo.usp_ConvertFromGMT ?, ?, ? OUTPUT

Я думаю, что вы можете затем сопоставить свой результат в качестве выходного параметра (3-й в команде) со столбцом потока данных.

...