Как изменить скрипт SQL, в котором есть переменные, для запуска в качестве пакета служб SSIS - PullRequest
1 голос
/ 15 апреля 2019

У меня есть скрипт ниже, который является хранимой процедурой, теперь эта хранимая процедура вызывалась из пакета служб SSIS. Теперь я не хочу вызывать его в пакетах служб SSIS, я хочу взять сам скрипт и поместить его в процесс пакета служб SSIS, который называется «Выполнение задачи SQL». У меня проблема в том, что эта хранимая процедура имеет переменные, и я никогда не использовал скрипт в пакетах служб 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.

Ответы [ 2 ]

1 голос
/ 15 апреля 2019


Исходя из моего опыта, можно запускать задачу сценария из переменной SSIS, но невозможно выполнить динамический sql-запрос в SSIS «Выполнение SQL-задания».
Быстрый обходной путь для запуска динамического запроса в SSIS заключается в создании сначала запрос в «Задаче сценария», а затем сохраните его во временную строковую переменную. И на последнем шаге установите временную переменную как «Команда SQL из переменной» в «Выполнить задачу SQL».
Надеюсь, этот ответ вам поможет.

1 голос
/ 15 апреля 2019

Вы можете скопировать весь код и использовать его в задаче «Выполнение SQL»:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...