Получение компонента Service Broker из хранимой процедуры CLR - PullRequest
2 голосов
/ 18 октября 2010

Я пытаюсь переместить эту хранимую процедуру 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()
{
    // ???
}

Спасибо!

1 Ответ

2 голосов
/ 19 октября 2010
    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...
        }
    }

Также обратите внимание, что дескриптор разговора отличается от идентификатора разговора. В вашем коде вы, кажется, смешиваете их.

...