使用SqlCommand / C#时如何获取服务代理对话框?

时间:2017-12-22 19:32:38

标签: c# sql-server service-broker

使用SQL Server的Service Broker时,您必须BEGIN DIALOG才能启动对话框。当通过SSMS等执行查询时,BEGIN DIALOG查询将对话框句柄放在变量中

我正在尝试使用.NET的SqlCommand来执行BEGIN DIALOG查询。我想,我希望SqlCommand能够返回对话框句柄。然后我可以在后续查询中使用该句柄。

我认为无法获取BEGIN DIALOG查询而是将句柄作为查询结果返回。

如何通过.NET BEGIN DIALOG执行SqlCommand查询,以便我能够处理该对话框?

1 个答案:

答案 0 :(得分: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;                            
}