2016-12-28 3 views
2

私はSQL Serverを初めて使用しています。SQL Serverストアドプロシージャの結果から指定した列とその値を選択してJSONに変換する方法はありますか?

要件::私は

  • 選択した列のヘッダーとその値がシリアル化されている指定された列ヘッダとSQL Serverのストアドプロシージャの結果からその値を選択する必要が

    1. ここに私の要件は、 SQL Server 2012のJSON文字列オブジェクトへの変換

    私がしたこと:

    SQL Server Management Studio 2012でテーブルのデータ変更を監視する必要があります。古いテーブルデータで挿入、削除、更新が発生した場合、SQL ServerからSQL Serverにインスタントメッセージを送信する必要があります。 WCFサービス。

    インスタントメッセージを送信するには、まずストアドプロシージャの結果セットから指定した列を選択し、JSON文字列としてシリアル化する必要があります。

    私は、データベース内の変更データキャプチャ機能とそのテーブルを追跡して、テーブルデータの変更を追跡しています。

    上記の場合、私はChange Data Capture機能を有効にしたデータベースとテーブルを作成しました。次に、テーブルのデータに値を挿入しました。

    最後に、ストアドプロシージャを使用して、結果としてテーブルデータの変更を表示します。

    マイデモクエリ:以上の結果から

    DECLARE @from_lsn binary(10), @to_lsn binary(10) 
    SET @from_lsn = sys.fn_cdc_get_min_lsn('dbo_one') 
    SET @to_lsn = sys.fn_cdc_get_max_lsn() 
    
    SELECT 
        CT.__$start_lsn, CT.__$operation, 
        CASE CT.__$operation 
         WHEN 1 THEN 'Delete' 
         WHEN 2 THEN 'Insert' 
         WHEN 3 THEN 'Update - Pre' 
         WHEN 4 THEN 'Update - Post' 
        END AS Operation, 
        CT.*, 
        LSN.tran_begin_time, LSN.tran_end_time, LSN.tran_id 
    FROM 
        cdc.fn_cdc_get_all_changes_dbo_one (@from_lsn, @to_lsn, N'all update old') AS CT 
    INNER JOIN 
        cdc.lsn_time_mapping AS LSN ON CT.__$start_lsn = LSN.start_lsn 
    

    Demo SP Result

    は、私は、操作の種類を選択する必要があり、列ヘッダーとその値を変更しました。

    選択したら、それらをすべてJSON文字列としてシリアル化し、SQL Server 2012のJSONオブジェクトをPOSTメソッド経由でWCFサービスに渡す必要があります。

    どうすればこの問題を解決できますか?誰も私がこれを解決するのを助けることができますか?

  • 答えて

    1

    実際は簡単です。まず、次のようなオブジェクトを作成する必要があります。

    [DataContract] 
    public class Output 
    { 
        [DataMember] 
        public string Name { get; set; } 
        [DataMember] 
        public string ID { get; set; } 
        . 
        . 
        . 
        //all other parameters 
    } 
    

    次に、ストアドプロシージャの出力を入れます。それで全部です。その後、WCFサービスで返すだけです。

    関連する問題