2016-04-28 21 views
0

Ich hatte etwa 10 Pakete, die seit Monaten ziemlich fehlerlos ausgeführt wurden. Diese Pakete verwenden die gleiche Skriptaufgabe, die ich grundsätzlich über alle Pakete kopiert habe. All diese Skriptaufgabe sendet eine E-Mail. Ich kam am Montag zur Arbeit und plötzlich bekomme ich diesen DTS Script Task Fehler auf allen Paketen, sobald er die E-Mail-Skript-Aufgabe erreicht. Mit diesen Paketen hat sich buchstäblich nichts geändert und ich bin mir nicht sicher, welche Schritte unternommen werden müssen, um das Problem zu beheben.SSIS - DTS Script Task hat eine Ausnahme im Benutzercode

#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 

Wenn ich Schritt durch den Code, so scheint es hier geschehen:

enter image description here

Jede Hilfe Sie wäre sehr dankbar zur Verfügung stellen kann.

Antwort

1

überall dort, wo Sie laufen Ihr Paket (lokal auf einem Server?) Das Outlook-Objekt nicht mehr vorhanden ist (oder es gibt ein Berechtigungsproblem - aber das ist unwahrscheinlich)

Abhängigkeiten wie diese sind immer schwierig zu verwalten, wenn Systeme verändern sich - und das werden sie immer! Es ist schwierig, 100% ig sicher zu sein, da ich an Ihrem Beispiel nicht erkennen kann, was Sie in Ihrer E-Mail senden - aber ich würde Ihnen empfehlen, das Skript komplett zu entfernen und die Aufgabe Send Mail Task zu verwenden.

+0

+1. Ich hatte Alpträume über "Kann ActiveX-Komponente nicht erstellen". CreateObject ist keine zuverlässige Methode, um Dinge zu tun. Bei E-Mail gibt es die Aufgabe Mail senden und eine direkte SMTP-Verbindung im Code als viel bessere Alternativen. – SebTHU

+0

Ich kann die Mail-Aufgabe wegen der E-Mail-Einrichtung meiner Firma nicht verwenden ... kann mich nicht genau erinnern, warum, aber ich habe ein paar Nachforschungen angestellt, weil ich das nicht zur Arbeit bringen konnte und am Ende mit der Skript-Aufgabe fertig war .. – Jon

+0

Ich führe gerade die Pakete lokal – Jon