Ho sviluppato un progetto ssis rispetto a 2012 Ultimate. Utilizzo il modello di implementazione del progetto e il progetto è impostato per l'esecuzione in modalità a 32 bit. Il pacchetto viene eseguito senza errori nel mio ambiente di sviluppo, ma quando schiero al catalogo SSIS e si tenta di correre lì, ottengo il seguente errore:Attività script DTS Errore di runtime: l'eccezione di una chiamata è stata lanciata dall'obiettivo di una chiamata
schiero il progetto a un Windows Server 2012 R2 e il database è anche 2012 con un catalogo SSIS.
Ho aperto il progetto sul server e ho tentato di eseguire il debug dell'attività di script sul server con un punto di interruzione ma l'errore si verifica prima di raggiungere il punto di interruzione.
Se disattivo tutte le mie attività di script, il pacchetto viene eseguito senza errori sul server.
ho anche aggiornato i server di opzioni di sicurezza locali disabilitando Cryptography sistema: utilizza algoritmi FIPS compatibile come una possibile soluzione postato su Microsoft Support.
Ho anche tentato di eseguire come un pacchetto di file system sul server e ottengo lo stesso errore.
Ho anche verificato tre volte che le mie variabili sono corrette e le ho anche impostate come variabili di lettura read.
Il primo codice attività di script è riportato di seguito (ma tutte le attività di scrip non superano/tre in questo pacchetto). L'attività di script fa riferimento a una DLL denominata UHS.IntegrationServices.CommonUtils che è stata sottoposta a GAC e la DLL è stata creata in VS 2005 con framwork 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
Il problema sembra essere nel riferimento alla DLL. Quando commento le righe NotifyInterface e NotifyListener lo script viene eseguito senza errori ma la dll si trova nel GAC e posso visualizzarla in C: \ Windows \ assembly.
Perché questo funziona sul mio locale ma non sul server? Il framework 2.0 è necessario sul server? Se il riferimento alla dll è rotto, non dovrei ottenere un errore più descrittivo?
Qualsiasi assistenza nella ricerca di idee per la risoluzione dei problemi sarebbe molto apprezzata.
Ciao, hai risolto il problema? qual è la soluzione? Grazie – Ling