2015-11-06 26 views
0

Я очень новичок в SSIS, поэтому, возможно, это тривиально, но до сих пор я не мог найти что-либо полезное с помощью Google или предыдущих вопросов.Принудительное выполнение задачи Loop

Во-первых, у меня есть пакет, который берет лист Excel, который поступает из подписки SSRS и отправляет его заинтересованным сторонам. Проблема в том, что иногда данные еще недоступны, поэтому электронная таблица полностью пуста, за исключением именованных столбцов. Я пытаюсь включить логику в пакет, в Loop, который проверяет, пустой ли отчет. если это так, сообщите этим сторонам о задержке и что пакет будет работать еще 2 раза с интервалом в 30 минут. Если после 3-й попытки отчет остается пустым, он отправит электронное письмо, в котором нет доступных данных, и он снова попробует завтра.

Моя проблема заключается в том, что я не могу понять, как заставить задачу цикла цикла сбой, если ее количество циклов достигает числа.

+0

Вы можете использовать задачу сценария бросить исключение внутри цикла и обрабатывать его в уровне вне вашего цикла. – saarrrr

+0

Если количество циклов достигает числа? Или вы имеете в виду, если количество строк внутри файла Excel больше определенного числа? Лично я бы использовал таблицу, чтобы контролировать это. –

+0

@ Tab Alleman - Я имею в виду конкретно, если количество циклов достигает числа. @saarrrr К сожалению, я действительно новичок в SSIS и сценариях, я по сути был брошен в это без реальной подготовки, и я барахтаюсь. Попробуем найти что-то подробное, как это сделать. –

ответ

1

Что-то вроде этого должно работать ... Добавить компонент сценария в поток управления и включить ваш счетчик циклов в списке переменных ReadOnly. Нижеприведенный скрипт будет успешным, если LoopCount = 0, но сработает после LoopCount = 1. script task set up Импорт система

Imports System.Data 
Imports System.Math 
Imports Microsoft.SqlServer.Dts.Runtime 
Public Class ScriptMain 
Public Sub Main() 
    If CInt(Dts.Variables("LoopCount").Value.ToString) = 0 Then 
     Dts.TaskResult = Dts.Results.Success 
    Else 
     Dts.TaskResult = Dts.Results.Failure 
    End If 
End Sub 
End Class 
+0

Эта концепция работала как шарм, спасибо. –

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