在我的應用程序中,我需要異步調用存儲過程。 爲此,我使用Sql Service Broker。 這些步驟涉及創建異步調用。異步調用存儲過程使用服務代理
1)我創建了Message,Contract,Queue,Service。 併發送messages.I可以在'ReceiveQueue1'中看到我的消息。
2)我創建了一個存儲過程和隊列 當我執行存儲過程(proc_AddRecord)時,它只執行一次。 它讀取隊列中的所有記錄並將這些記錄添加到表中。 012pt高興這一點它的工作正常。 但是,當我向'ReceiveQueue1'添加一些新消息時,我的存儲過程不會自動將這些 記錄添加到表中。我必須重新執行存儲過程(proc_AddRecord) 以添加新消息。爲什麼Stored proc沒有被執行。 我應該這樣做,以便異步調用存儲過程。 使用Service Broker的重點是異步調用存儲過程。 我完全不熟悉SQL Server Service Broker。 感謝任何幫助。 這裏是我的存儲過程
#--exec proc_AddRecord
ALTER PROCEDURE proc_AddRecord
AS
Declare
@Conversation UniqueIdentifier,
@msgTypeName nvarchar(200),
@msg varbinary(max)
While (1=1)
Begin
Begin Transaction;
WAITFOR
(
Receive Top (1)
@Conversation = conversation_handle,
@msgTypeName = message_type_name,
@msg = message_body
from dbo.ReceiveQueue1
), TIMEOUT 5000
IF @@Rowcount = 0
Begin
Rollback Transaction
Break
End
PRINT @msg
If @msg = 'Sales'
BEGIN
insert into TableCity(deptNo,Manager,Group,EmpCount) VALUES(101,'Reeves',51, 29)
COMMIT Transaction
Continue
End
If @msg = 'HR'
BEGIN
insert into TableCity(deptNo,Manager,Group,EmpCount) VALUES(102,'Cussac',55, 14)
COMMIT Transaction
Continue
End
Begin
Print 'Process end of dialog messages here.'
End Conversation @Conversation
Commit Transaction
Continue
End
Rollback Transaction
END
ALTER QUEUE AddRecorQueue
WITH ACTIVATION (
PROCEDURE_NAME=proc_AddRecord,
MAX_QUEUE_READERS = 1,
STATUS = ON,
EXECUTE AS 'dbo');
非常好,我添加了激活到''ReceiveQueue1',它的工作完美。我在最後刪除了回滾。謝謝你的幫助。 – Henry