2

我正在尝试将此 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()
{
    // ???
}

谢谢!

4

1 回答 1

2
    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 不同。在您的代码中,您似乎混合了这些。

于 2010-10-18T22:31:51.370 回答