Расширение файла Script task и Обработка ошибок - PullRequest
0 голосов
/ 15 января 2019

У меня буквально нет опыта работы с VB-скриптом или C #. Я создал этот пакет служб SSIS, используя какое-то онлайн-руководство по выбору сервера, но я должен настроить его под свои требования.

Текущий сценарий:

Я пытаюсь запустить пакет служб SSIS, в котором есть контейнер цикла для каждого, который импортирует файлы с расширением *.txt в каталог, поскольку имена файлов не являются постоянными. За этим контейнером цикла for-each следуют некоторые другие задачи SQL.

Пакет успешно выполняется, даже если в каталоге нет файлов (может быть, я что-то не так сделал при создании задач контейнера и потока данных, задач файловой системы). Это приводит к успешному выполнению сценария SQL в конце контейнера цикла for-each, что приводит к неверным данным.

Требования:
Пакет должен потерпеть неудачу, если в каталоге нет файла. Я должен реализовать скрипт перед каждым циклом контейнера, но не уверен, как это сделать. Любые выводы будут оценены!

Я сделал что-то подобное, но не уверен, как искать по расширению вместо имени файла:

Public Sub Main()
    '
    ' Add your code here
    '
    Dim fileName As String
    fileName = "filename.txt"

    If System.IO.File.Exists(fileName) Then
        Dts.Variables("User::bolFileExists").Value = True
    Else
        Dts.Variables("User::bolFileExists").Value = False
    End If

    Dts.TaskResult = ScriptResults.Success
End Sub

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Вы должны использовать функцию System.IO.Directory.GetFiles().

If System.IO.Directory.GetFiles(<your path goes here>, "*.txt", SearchOption.AllDirectories).Length = 0 Then 
   Dts.Variables("User::bolFileExists").Value = False
Else
    Dts.Variables("User::bolFileExists").Value = True
End If
0 голосов
/ 15 января 2019

Ниже было бы мое предложение, я сделал то же самое в одном из моих требований, используя раздел обработки событий, что базовый DFT не запускается, тогда сценарий на странице обработчика событий вызовет ошибку. Следует отметить, что DFT запускается по крайней мере один раз, если в каталоге есть какой-либо файл, и возникновение ошибки, если он не выполняется, будет проще, чем написание сложного сценария

Спасибо, Шринивас

...