Ders 2: İç etkinleştirme yordamı oluşturma
Bu derste, oluşturmak öğreneceksiniz bir saklı yordam işlem iletileri için bir Service Broker sıra.Sıradaki iletileri vardır her saat yordamı etkinleştirilmesi belirleme konusunda da öğreneceksiniz.
Yordamlar
AdventureWorks2008R2 veritabanına geçiş yapmak
Kopyalama ve aşağıdaki kodu bir Query Editor penceresine yapıştırın.Daha sonra çalıştırmak için içeriğinde geçiş yapma AdventureWorks2008R2 veritabanı.
USE AdventureWorks2008R2; GO
Bir iç etkinleştirme oluşturmasaklı yordam
Kopyalama ve aşağıdaki kodu bir Query Editor penceresine yapıştırın.Daha sonra çalıştırın oluşturmak amacıyla bir saklı yordam.Ne zaman çalıştırmak vardır sürece iletiler sıraya ileti alma saklı yordam tutar olduğunu.Bir ileti dönmeden alma zaman aşımına uğrarsa, saklı yordam sona erer.Alınan iletiyi bir istek iletisi ise, saklı yordam bir yanıt iletisi döndürür.Alınan ileti ise bir EndDialog ileti, saklı yordam hedef yan Görüşmenin sona erer.Alınan ileti ise ve hata ileti, onu geri alır hareket.
CREATE PROCEDURE TargetActivProc AS DECLARE @RecvReqDlgHandle UNIQUEIDENTIFIER; DECLARE @RecvReqMsg NVARCHAR(100); DECLARE @RecvReqMsgName sysname; WHILE (1=1) BEGIN BEGIN TRANSACTION; WAITFOR ( RECEIVE TOP(1) @RecvReqDlgHandle = conversation_handle, @RecvReqMsg = message_body, @RecvReqMsgName = message_type_name FROM TargetQueueIntAct ), TIMEOUT 5000; IF (@@ROWCOUNT = 0) BEGIN ROLLBACK TRANSACTION; BREAK; END IF @RecvReqMsgName = N'//AWDB/InternalAct/RequestMessage' BEGIN DECLARE @ReplyMsg NVARCHAR(100); SELECT @ReplyMsg = N'<ReplyMsg>Message for Initiator service.</ReplyMsg>'; SEND ON CONVERSATION @RecvReqDlgHandle MESSAGE TYPE [//AWDB/InternalAct/ReplyMessage] (@ReplyMsg); END ELSE IF @RecvReqMsgName = N'https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog' BEGIN END CONVERSATION @RecvReqDlgHandle; END ELSE IF @RecvReqMsgName = N'https://schemas.microsoft.com/SQL/ServiceBroker/Error' BEGIN END CONVERSATION @RecvReqDlgHandle; END COMMIT TRANSACTION; END GO
İç etkinleştirme belirtmek için hedef sıra alter
Kopyalama ve aşağıdaki kodu bir Query Editor penceresine yapıştırın.Then, run it to specify that Service Broker activate the TargetActiveProc stored procedure to process messages from TargetQueueIntAct. Service Broker will run a copy of TargetActiveProc any time a message is received in TargetQueueIntAct and no copy of the procedure is already running.Service Broker will run additional copies of TargetActiveProc whenever the existing copies do not keep up with the number of incoming messages.
ALTER QUEUE TargetQueueIntAct WITH ACTIVATION ( STATUS = ON, PROCEDURE_NAME = TargetActivProc, MAX_QUEUE_READERS = 10, EXECUTE AS SELF ); GO
Sonraki Adımlar
Başarıyla yapılandırdınız AdventureWorks2008R2 arasında bir görüşme desteklemek için //AWDB/InternalAct/InitiatorService ve //AWDB/InternalAct/TargetService.Daha sonra yapılandırma'yı kullanarak konuşma tamamlayacak. See Ders 3: Görüşme başlangıç ve iletileri gönderme.
Ayrıca bkz.