2016-05-10 3 views
0

Ich habe ein sehr sehr seltsames Problem mit SSIS und wollte wissen, ob jemand anderes etwas Ähnliches hatte.SSIS Script Aufgabe - Eingabe String war nicht in einem korrekten Format

In einem Datenfluss habe ich eine Quelle, die Daten aus einer MSSQL-Tabelle erhält und sie dann einer Datentransformations-Skriptaufgabe zuführt.

Das Skript Aufgabe lautet wie folgt:

Script Task

public override void Input0_ProcessInputRow(Input0Buffer Row) 
{ 
    string SecurityHeader = (string)Variables.SecurityHeader; 
    string APIToken = (string)Variables.APIToken; 
    var AppFormID = (string)Row.AppFormID; 
    var AppClassName = (string)Row.AppClassName; 
    var Lat = Row.Latitude; 
    var Long = Row.Longitude; 

    var data = new 
    { 
     record = new 
     { 
      status = Row.Status.ToString(), 
      latitude = Row.Latitude, 
      longitude = Row.Longitude, 
      form_values = new Dictionary<string, string>() 
     } 
    }; 

    if (Row.CreatedBy_IsNull == false) { data.record.form_values["1a09"] = Row.CreatedBy.ToString(); } 

    string jsonstring = JsonConvert.SerializeObject(data); 
    var client = new RestClient(AppURLRef); 
    var request = new RestRequest(Method.POST); 
    request.AddHeader(SecurityHeader, APIToken); 
    request.AddHeader("content-type", "application/json"); 
    request.AddParameter("application/json", jsonstring, ParameterType.RequestBody); 

    try 
    { 
     IRestResponse dataresponse = client.Execute(request); 
     if (dataresponse.StatusCode.ToString() == "Created") 
     { 
      var listobject = JsonConvert.DeserializeObject<Lists>(dataresponse.Content); 
     } 
     else 
     { 
      Row.OErrorMsg = dataresponse.ErrorMessage.ToString(); 
     }; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message + " Data: " + ex.Data + " Inner Exception: " + ex.InnerException); 
    } 
} 

Die Ausgabe

Als ich dies ohne Bruchstellen betreibe ich eine Message Box mit der Fehlermeldung erhalten "Eingabezeichenfolge war nicht im richtigen Format"

Wo das wirklich komisch wird ist, dass wenn ich einen Break Point in den Code einfüge, perfekt funktioniert und somit ein Zeilenfehler unmöglich wird.

Hat jemand schon einmal ein Problem wie dieses gesehen und wenn ja, wie haben Sie es behoben?

aktualisieren

Nach ein paar Ratschläge folgenden ich den Versuch catch-Block bis zum Beginn des Skripts bewegt, führte dies zu keiner Änderung wurde der Versuch catch-Block nie getroffen.

Ich versuchte, aber eine MessageBox.Show("") ganz oben in der Eingabe Prozess Zeile und wieder wurde dies nicht getroffen. Etwas passiert auf einer höheren Ebene als diese beiden Gedanken, die ich nicht herausfinden kann, wo oder wie dies geschieht.

Noch einmal zu wiederholen, der Fehler ist in einer MessageBox, nicht in der Ausgabe und nichts wird in der Registerkarte Prozess protokolliert. Das bedeutet also keine Zeilennummern, keine sinnvollen Fehlermeldungen, in denen der Fehler diskutiert wird.

+0

Wenn Fehler Popup zeigt es die Zeile Nr. Außerdem können Sie den Datentyp des Konvertierungsteils überprüfen, es sollte einen korrekten Wert haben, um konvertiert zu werden. – sumngh

+0

Nicht sicher über den Breakpoint, der den Fehler/Erfolg beeinflusst, aber versuchen Sie, den Umfang Ihres try-Blocks zu erweitern. Verschieben Sie die Eröffnungsanweisung in die Zeile vor "string SecurityHeader" – billinkc

+0

@billinkc - Gute Idee, aber wieder nicht gehen, enthalten das gesamte Skript und nichts. Ich habe auch ein Nachrichtenfeld ganz oben im Skript hinzugefügt und es wird nie aus irgendeinem Grund getroffen.Es ist etwas auf einer höheren Ebene passiert ... nur nicht sicher wo – Caz1224

Antwort

0

Ich habe es geschafft, dies zu lösen, nach der ALLES heraus und alle Eingabe-Spalten entfernen der Fehler noch aufgetreten ist.

ich es auf eine andere Art und Weise legte Microsoft will mich bestrafen, kopiert ich der Code das Skript Task gelöscht, hinzugefügt in ein neues Skript Aufgabe und kopiert den alten Code zurück. Funktionierte perfekt ...

Dank Microsoft !!

0

Put Verzögerung in catch-Block in der nächsten Zeile MessageBox.Show

Sie in der Lage Meldungsfeld anzuzeigen.

Einige Zeit Nachrichtenbox geht in den Hintergrund (USe ALT + TAB, um es zu finden).

+0

Dank @sandeep rawat - Dies ist nicht das Problem, aber es wird nie in den Versuch Catch-Block, es trifft etwas viel früher und warum die Einstellung eines Breakpoint behebt es ist noch seltsamer. – Caz1224

Verwandte Themen