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.
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
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
@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