2017-07-12 8 views
0

オンプレミアムゲートウェイを使用してオンサイトデータベースのストアドプロシージャを実行するロジックアプリケーションを作成しました。 SQL Server Management Studioでは、結果を完全なxmlオブジェクトとして取得します。ロジックapp出力のストアドプロシージャsplitted xmlオブジェクト

Azureロジックアプリケーションでそのストアドプロシージャを実行すると、同じxmlオブジェクトの結果が、完全なxml文字列を含むjsonオブジェクトではなく、複数のjsonオブジェクトに分割されます。

SQL Server Management Studioでは、SQL select文の後にFOR XML RAW, Root('<RootName>')があります。

なぜこの問題が解決されますか?

以下

はスクリーンショットです:

enter image description here

答えて

0

私は出力を修正するために、単純な機能のアプリケーションを実装することにより、同様の問題を解決しました。

私の場合は、JSON AUTOのSQLクエリによって生成されたJSONですが、XMLにも同じことを適用できるはずです。次の記事では、私は出力を処理して、単一のJSONペイロードにそれを統合するための簡単な機能アプリケーションを実装

A large result set splits the long JSON string across multiple rows.

ことを言及しています。ここで

は、一般的なウェブフック機能である私の関数のコードです:

public static async Task<object> Run(HttpRequestMessage req, TraceWriter log) 
    { 
     log.Info($"ProcessSentimentJson was triggered!"); 

     string jsonContent = await req.Content.ReadAsStringAsync(); 

     StringBuilder sb = new StringBuilder(); 
     JArray array = JArray.Parse(jsonContent); 

     List<string> list = array.Select(p => (string)p["JSON_F52E2B61-18A1-11d1-B105-00805F49916B"]).ToList(); 
     foreach (var l in list) 
      sb.Append(l); 

     return req.CreateResponse(HttpStatusCode.OK, sb.ToString()); 
    } 

次に、あなたは、あなたのロジックのアプリケーションに追加するストアドプロシージャから結果を渡すと、次のアクティビティに出力を使用することができます:

enter image description here

ハッピーコーディング!

+0

ええ、私は似たような解決策を考えていましたが、そのような解決策がなくてもそれを実現できることを期待していましたが、どうすればいいのでしょうか。私は似たようなものを試してみるよ、ありがとう@ジャカブ! :) – John

0

Solution by Jakubは確かにそれを解決する方法の1つですが、追加コスト(関数を呼び出す青空関数とロジックアプリケーションアクション)が付いています。

もう1つの方法は、SQLからXMLをbase64文字列として返すことです。そうすることで、Logic Appでbase64ToString関数とxml関数を使用できます。

+0

さて、私は一緒に暮らすことができます。ストアドプロシージャでbase64ToStringを直接使用する方法はありますか?のように、同じ質問で話すことができますか? ありがとう@StevenVanEycken – John

+0

OKこれで試してみましたが、base64tostringはロジックアプリケーションの処理に長い時間がかかります。その前にxmlだけエンコードされたxmlを分割します。 – John

+0

うーん、私はその行動を期待していませんでした。私はデータ操作の作成と結合があなたを助けるかもしれないかと思います。私は今自分自身でそれを試してみる時間がありませんが、今週末にPOCにしようとします。 –

関連する問題