2014-07-08 9 views
5

Mam projekt ssis opracowany w porównaniu do 2012 r. Ultimate. Korzystam z modelu wdrażania projektu, a projekt jest ustawiony na uruchamianie w trybie 32-bitowym. Pakiet wykonuje bezbłędnie w moim środowiska rozwoju, ale gdy wdrożyć go do katalogu SSIS i próbować go uruchomić tam, pojawia się następujący błąd:Zadanie Runtime zadania zadania DTS: Wyjątek został zgłoszony przez cel wywołania

error dialog

wdrożyć projekt do Windows Server 2012 R2 a baza danych to także 2012 z katalogiem SSIS.

Uruchomiłem projekt na serwerze i próbowałem debugować zadanie skryptu na serwerze z punktem przerwania, ale błąd występuje przed dotarciem do punktu przerwania.

Jeśli wyłączę wszystkie moje zadania skryptowe, pakiet zostanie wykonany bezbłędnie na serwerze.

Mam również zaktualizowane serwerach lokalnych opcje zabezpieczeń wyłączając Kryptografia systemu: użyj algorytmów zgodnych FIPS jako możliwe rozwiązanie zamieszczonych na Microsoft Support.

Próbowałem również uruchomić jako pakiet systemu plików na serwerze i pojawia się ten sam błąd.

Też potrójnie sprawdziłem, czy moje zmienne są poprawne, a nawet ustawiają je jako zmienne do odczytu.

Pierwszy kod zadania skryptowego znajduje się poniżej (ale wszystkie zadania skryptu kończą się niepowodzeniem/trzy w tym pakiecie). Zadanie skryptu odwołuje się do biblioteki dll o nazwie UHS.IntegrationServices.CommonUtils, która została utworzona jako GACed, a biblioteka dll została zbudowana w VS 2005 z ramką 2.0.50727.

Public Sub Main() 

    Dim packageID As String = Dts.Variables("System::PackageID").Value.ToString() 
    Dim strInterfaceName As String = Dts.Variables("System::PackageName").Value.ToString() 
    Dim strConfigConnectionString1 As String = Dts.Variables("User::UHS_SSIS_CNXN_STR_CONFIG").Value.ToString() 
    Dim myConnection As OleDb.OleDbConnection = New OleDb.OleDbConnection 
    Dim mySqlCommand As OleDb.OleDbCommand = New OleDb.OleDbCommand 
    Dim myReader As OleDb.OleDbDataReader = Nothing 
    Dim rowsProcessed As Integer = 0 

    Try 
     myConnection.ConnectionString = strConfigConnectionString1 
     myConnection.Open() 

     Dim getEmailQuery As String = "SELECT Email FROM EmailMaster" & _ 
             " where InterfaceName='" & strInterfaceName & "'" & _ 
             " and Active = 'Y' " 

     Dim NotifyInterface As SMTPNotifyAlerts 
     NotifyListenerManager.GetNotifierByType(packageID, NotifyInterface, CommonNotifierAlerts.AlertInfo.AlertTypes.alertEmail) 


     mySqlCommand = New OleDb.OleDbCommand(getEmailQuery, myConnection) 
     mySqlCommand.CommandTimeout = 0 
     myReader = mySqlCommand.ExecuteReader 

     If (myReader.HasRows()) Then 
      While (myReader.Read()) 
       NotifyInterface.alertDest.Add(myReader("Email").ToString().Trim()) 
       rowsProcessed = rowsProcessed + 1 
      End While 
     End If 

     NotifyListenerManager.BroadcastMessage(CommonNotifierAlerts.BasicAlerts, 0, Nothing, "Startup logfile") 
     Dts.TaskResult = ScriptResults.Success 
    Catch ex As Exception 
     Dts.Events.FireError(0, "Init Email Master", ex.Message, "", 0) 
     Dts.TaskResult = ScriptResults.Failure 
    End Try 

End Sub 

Problem pojawia się w odniesieniu do biblioteki dll. Kiedy komentuję linie NotifyInterface i NotifyListener, skrypt wykonuje się bezbłędnie, ale biblioteka DLL znajduje się w GAC i mogę ją wyświetlić w C: \ Windows \ assembly.

Dlaczego to działa na moim lokalnym serwerze, ale nie na serwerze? Czy na serwerze potrzebny jest framework 2.0? Jeśli odniesienie do biblioteki DLL jest zepsute, czy nie powinienem otrzymać bardziej opisowego błędu?

Każda pomoc w szukaniu pomysłów na kłopoty byłaby bardzo doceniana.

+0

Cześć, czy rozwiązać ten problem? jakie jest rozwiązanie? Dzięki – Ling

Odpowiedz

3

Musisz ustawić punkt przerwania na początku zadania PIERWSZY skrypt, tak jak zrobiłbyś to w przypadku każdej debugowania VB. Następnie F8 przez każdą linię kodu, aż zostanie zgłoszony błąd.

+0

to zadziałało dla mnie. –

Powiązane problemy