SSIS — задача сценария DTS обнаружила исключение в пользовательском коде

У меня было около 10 пакетов, которые работали безупречно в течение нескольких месяцев. Эти пакеты используют одну и ту же задачу сценария, которую я в основном скопировал во все пакеты. Все, что делает эта задача сценария, — отправляет электронное письмо. Я пришел на работу в понедельник, и вдруг я получаю эту ошибку задачи сценария DTS для всех пакетов, как только она попадает в задачу сценария электронной почты. Буквально ничего не изменилось ни в одном из этих пакетов, и я не знаю, какие шаги предпринять, чтобы это исправить.

#Region "Imports"
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
#End Region

Public Sub Main()

    'send email notification
    Dim message As String = "message goes here"
    sendEmail("[email protected]", "Subject is here", message)



    Dts.TaskResult = ScriptResults.Success
End Sub


Sub sendEmail(ByRef toaddr As String, ByRef sbj As String, ByRef msg As String)
    Dim objOutlook As Object
    Dim objOutlookMsg As Object
    objOutlook = CreateObject("Outlook.Application")
    objOutlookMsg = objOutlook.CreateItem(0)
    With objOutlookMsg
        .To = toaddr
        .Subject = sbj
        .Body = msg
        .sentonbehalfofname = "[email protected]"
        .Send()
    End With
    objOutlookMsg = Nothing
    objOutlook = Nothing
End Sub

Когда я прохожу код, кажется, что это происходит здесь:

введите здесь описание изображения

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


person Jon    schedule 28.04.2016    source источник


Ответы (1)


Где бы вы ни запускали свой пакет (локально? на сервере?), объект Outlook больше не существует (или есть проблема с разрешением, но это маловероятно)

Подобными зависимостями всегда трудно управлять, когда системы меняются, и они всегда будут! Трудно быть уверенным на 100%, потому что я не вижу из вашего примера, что вы отправляете в своем электронном письме, но я бы рекомендовал вам вообще отказаться от сценария и использовать Задание отправки почты.

person BIDeveloper    schedule 29.04.2016
comment
+1. Раньше мне снились кошмары о том, что невозможно создать компонент ActiveX. CreateObject не является надежным способом делать что-то. С электронной почтой есть задача «Отправить почту» и создание прямого SMTP-соединения в коде как гораздо лучшие альтернативы. - person SebTHU; 29.04.2016
comment
Я не могу использовать задачу отправки почты из-за настройки электронной почты моей компании... не могу точно вспомнить, почему, но я провел кучу исследований, потому что не смог заставить это работать, и в итоге остановился на задаче сценария. . - person Jon; 29.04.2016
comment
В настоящее время я запускаю пакеты локально - person Jon; 29.04.2016
comment
Я предлагаю вам написать сценарий VB, который пытается имитировать сценарий — как только вы заработаете, вы можете вставить его в свой пакет. Я настоятельно рекомендую вам вместо этого следовать опубликованному ответу! - person BIDeveloper; 30.04.2016