Как использовать хранимые процедуры в задаче преобразования данных DTS? - PullRequest
5 голосов
/ 18 сентября 2008

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

Кто-нибудь заставил это работать?

Предупреждение: хранимая процедура использует две временные таблицы (и, конечно, очищает их)

Ответы [ 3 ]

3 голосов
/ 18 сентября 2008

Введите некоторые допустимые значения для параметров хранимой процедуры, чтобы она выполнялась и возвращала некоторые данные (или даже отсутствие данных, вам просто нужны столбцы). Затем вы сможете выполнить сопоставление и т. Д. Затем выполните отключенное редактирование и измените фактические значения параметров (я полагаю, вы получаете их из глобальной переменной).

DECLARE @param1 DataType1  
DECLARE @param2 DataType2
SET @param1 = global variable  
SET @param2 = global variable (I forget exact syntax)  

--EXEC procedure @param1, @param2  
EXEC dbo.proc value1, value2

Обычно вы запускаете его так, чтобы процедура возвращала результаты. Выполните сопоставление, затем в отсоединенном редакторе закомментируйте второй EXEC и раскомментируйте первый EXEC, и он должен работать.

По сути, вам просто нужно запустить процедуру и выложить результаты. Даже если вы не вернете строки, они все равно будут правильно отображать столбцы. У меня нет доступа к нашей производственной системе (или даже базе данных) для создания пакетов dts. Поэтому я создаю их в фиктивной базе данных и заменяю хранимую процедуру чем-то, что возвращает те же столбцы, которые будет запускать производственное приложение, но без строк данных. Затем после того, как сопоставление сделано, я перемещаю его в производственную коробку с реальной процедурой, и она работает. Это прекрасно работает, если вы отслеживаете базу данных с помощью сценариев. Вы можете просто запустить скрипт, чтобы создать пустую процедуру оболочки, и когда закончите, запустить скрипт, чтобы вернуть истинную процедуру.

0 голосов
/ 18 сентября 2008

Нет, я мог сохранить хранимые процедуры только с помощью DTS, сохранив их состояние в таблицах отходов.

0 голосов
/ 18 сентября 2008

Вам нужно было бы фактически загрузить их в таблицу, затем вы можете использовать задачу SQL, чтобы переместить ее из этой таблицы в папку с именем perm, если вам необходимо выполнить перевод.

однако я обнаружил, что при работе с хранимой процедурой для получения данных почти так же быстро и легко переместить ее к месту назначения одновременно!

...