2016-05-10 18 views
0

SSISで非常に奇妙な問題が発生しており、他の誰かが類似しているかどうかを知りたいと思っていました。SSISスクリプトタスク - 入力文字列が正しい形式でない

データフローでは、MSSQLテーブルからデータを取得し、それをデータ変換スクリプトタスクに供給するSourceがあります。

次のようにスクリプトタスクは次のとおりです。

スクリプトタスク

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); 
    } 
} 

問題

私は任意のブレークポイントなしでこれを実行すると、私はエラーでメッセージボックスを取得"入力文字列の形式が正しくありません"

これが本当に奇妙になるのは、コード内にブレークポイントを置くと完璧に動作するため、ラインエラーが発生しないということです。

誰もこれまでにこのような問題に遭遇したことがありますか?もしそうなら、どのように修正しましたか?

更新

は、私は、スクリプトの開始までのtry catchブロックを移動し、いくつかのアドバイスに従った後、これは、try catchブロックがヒットしていなかった全く変化が生じました。

入力プロセス行の最上部にあるMessageBox.Show("")にしようとしましたが、これもまたヒットしませんでした。これらの両方の考えよりも高いレベルで何かが起きているのですが、これがどこでどのように起こっているかを知ることができません。

また、エラーをMessageBoxに表示し、出力ではなく、何もプロセスタブに記録されません。つまり、行番号はなく、このエラーがどこで発生しているかを説明する有用なエラーメッセージはありません。次の行でcatchブロックで

+0

エラーポップアップが表示されると、回線番号が表示されます。また、両方の変換部分のデータ型をチェックすることができます、それは適切な値を変換する必要があります。 – sumngh

+0

失敗/成功に影響するブレークポイントについては不明ですが、tryブロックのスコープを拡大してみてください。開始文を 'string SecurityHeader'の前の行に移動します。 – billinkc

+0

@billinkc - 良いアイデアですが、やはりすべてのスクリプトは含まれていません。私はまた、スクリプトの一番上にメッセージボックスを追加しました。それは何らかの理由で決してヒットしません。より高いレベルで何かが起こっています...確かにわかりません – Caz1224

答えて

0

私はこれを解決するために、EVERYTHINGをコメントアウトしてすべての入力列を削除したが、エラーはまだ発生していた。

私はコードは、スクリプトタスクを削除した新しいスクリプトタスクを追加し、バックで古いコードをコピーし、コピー、Microsoftが私を罰するために望んでいる別の方法にそれを置く。完全に働いた...

おかげでマイクロソフトを!!

0

入れ遅延が

はあなたのことがメッセージボックスを表示します。MessageBox.Showします。

いくつかの時間メッセージボックスがバックグラウンド(USe ALT + TABを見つけるために)に入ります。

+0

ありがとう@sandeep rawat - これは問題ではありませんが、try catchブロックに入ることはありません。ずっと以前に何かがヒットしています。 – Caz1224

関連する問題