2010-10-18 16 views
2

Je suis en train de déplacer cette procédure stockée T-SQL à une procédure CLR, mais il y a une commande spécifique Service Broker que je ne sais pas comment mettre en œuvre:Recevez Service Broker d'une procédure stockée CLR

DECLARE @msgBody XML  
DECLARE @dlgId uniqueidentifier 

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

Savez-vous comment faire la même chose sur .net?

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

Merci!

Répondre

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... 
     } 
    } 

Notez également que le handle de conversation est différent de l'ID de conversation. Dans votre code, vous semblez les mélanger.

+0

qu'est-ce que contextConnection? – JoshBerke