#sql #sql-server #stored-procedures #ssis
#sql #sql-server #хранимые процедуры #ssis
Вопрос:
Ниже у меня есть сценарий, который представляет собой хранимую процедуру, теперь эта хранимая процедура вызывалась из пакета SSIS раньше. Теперь я не хочу вызывать его в пакетах SSIS, я хочу взять сам скрипт и поместить его в свой процесс пакета SSIS под названием Execute SQL Task . Проблема, с которой я сталкиваюсь, заключается в том, что эта хранимая процедура имеет переменные, и я никогда не использовал сценарий в пакетах SSIS с переменными. Как мне изменить свой сценарий, чтобы он соответствовал пакетам SSIS?
То, что я пробовал раньше, было не так много, поскольку у меня нет информации о переменных в пакетах SSIS. Я был бы рад вашей помощи в этом.
Declare @cmd varchar(max), @dateStart as date, @dateEnd as Date,
@dsTxt as char(10), @deTxt as char(10), @YM as char(6)
set @dateStart = CONVERT(VARCHAR(25), DATEADD(dd,-(DAY(DATEADD(mm, 1, getdate())) - 1), DATEADD(mm, -1, getdate())), 120)
set @dsTxt = @dateStart
set @dateEnd = CONVERT(VARCHAR(25), DATEADD(dd, -(DAY(getdate()) - 1), getdate()), 120)
set @deTxt = @dateEnd
set @YM = cast(year(@dateStart) as char(4)) case when len(cast(month(@dateStart) as char(2))) = 1 then '0' cast(month(@dateStart) as char(2)) else cast(month(@dateStart) as char(2)) end
print @dateStart
print @dsTxt
print @datEend
print @deTxt
print @YM
truncate table tablename1
--delete from dbo.Wasp_CDR
set @cmd = '
insert into tablename1
SELECT *
FROM OPENQUERY (M_yea, ''SELECT column1,column2
From tablename2
where (column1 like ''''SMSZ%'''' or column2 like ''''08%'''')
and column3 = ''''SMS'''' and column4 = ''''MO''''
and to_char(date, ''''YYYYMM'''') = ''''' @YM ''''''');'
--print @cmd
exec (@cmd)
Я ожидаю найти способ, как мне использовать сценарии, в которых есть переменные в пакетах SSIS.
Комментарии:
1. Вы выводите все переменные в этом запросе, я не вижу никакой внешней переменной, поскольку вам нужно передавать значения извне (из другого запроса). Я не вижу никаких причин, по которым этот запрос не работает. Установите для свойства ResultSet значение ‘Fullresultset’. Вы пытались поместить этот запрос в том виде, в каком он есть в компоненте SSIS ‘Execute SQL Task’?
2. @NiranjanRajawat моя кнопка добавления набора результатов отключена, что должно быть причиной этого?
3. неважно, это видно
4. я сталкиваюсь с ситуацией, когда, говоря, что «текст команды не был установлен для объекта command» в источнике OLEDB, как мне это исправить?
5. а также я получаю эту ошибку. Оператор Declare SQL construct or не поддерживается.
Ответ №1:
по моему опыту, можно запустить задачу сценария из переменной SSIS, но невозможно выполнить динамический SQL-запрос в SSIS «Выполнить задачу SQL».
Быстрый обходной путь для запуска динамического запроса в SSIS — сначала сгенерировать запрос в «Задаче сценария», а затем сохранить его во временной строковой переменной. И для последнего шага установите временную переменную как «SQL command from variable» в «Выполнить задачу SQL».
Я надеюсь, что этот ответ поможет вам.
Ответ №2:
Вы можете скопировать весь код и использовать его в задаче Execute SQL: