2017-12-22 7 views
1

SQL ServerのService Brokerを使用する場合、ダイアログを開始するにはBEGIN DIALOGにする必要があります。 BEGIN DIALOGクエリは、SSMSなどを介してクエリを実行するとき、ダイアログハンドルを変数に入れます。SqlCommand/C#を使用しているときにサービスブローカのダイアログハンドルを戻す方法は?

私はBEGIN DIALOGクエリを実行するのに.NETのSqlCommandを使用しようとしています。私はSqlCommandがダイアログハンドルを返すようにしたいと思います。私はその後、後続のクエリでそのハンドルを使用することができます。

代わりにBEGIN DIALOGクエリを取得して、クエリ結果としてハンドルを返すことはできません。

BEGIN DIALOGクエリを.NETのSqlCommand経由で実行して、そのダイアログハンドルを取得できるようにするにはどうすればよいですか?

+0

ストアドプロシージャを作成してハンドルを返すことはできますか? – SteveB

答えて

2

SqlCommandで出力パラメータを使用できます。例:

using (var cmd = new SqlCommand(@"BEGIN DIALOG CONVERSATION @dialog_handle FROM SERVICE ... TO SERVICE ... ON CONTRACT ...", connection)) { 
    var handleParam = new SqlParameter("dialog_handle", SqlDbType.UniqueIdentifier) { 
     Direction = ParameterDirection.Output 
    }; 
    cmd.Parameters.Add(handleParam); 
    cmd.ExecuteNonQuery(); 
    var dialogHandle = (Guid)handleParam.Value;        
} 
関連する問題