【问题标题】:Receive Service Broker from a CLR stored procedure从 CLR 存储过程接收 Service Broker
【发布时间】:2010-10-18 19:37:27
【问题描述】:

我正在尝试将此 T-SQL 存储过程移动到 CLR 过程,但有一个我不知道如何实现的 Service Broker 特定命令:

DECLARE @msgBody XML    
DECLARE @dlgId uniqueidentifier

;RECEIVE top(1) 
        @msgBody    = message_body,      
        @dlgId      = conversation_handle    
FROM    dbo.TargetAuditQueue

你知道如何在 .net 上做同样的事情吗?

[SqlProcedure]
public void AuditParseEventData()
{
    // ???
}

谢谢!

【问题讨论】:

    标签: .net sql-server service-broker


    【解决方案1】:
        SqlCommand receiveCommand = contextConnection.CreateCommand();
        receiveCommand.Transaction = transaction;
        receiveCommand.CommandText = "RECEIVE TOP(1) message_body, conversation_handle FROM dbo.TargetAuditQueue";
        using (SqlDataReader reader = receiveCommand.ExecuteReader())
        {
            if (reader.Read())
            {
                SqlBinary messageBody = reader.GetSqlBinary(0);
                Guid conversationHandle = reader.GetGuid(1);
                // your stuff...
            }
        }
    

    另外,请注意对话句柄与对话 ID 不同。在您的代码中,您似乎混合了这些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多