В настоящее время у меня возникают проблемы с вызовом async хранимой процедуры из триггера insert-update. Для этого я использую сервис-брокер.SQL Server 2005 Asnyc хранимая процедура
--message type
CREATE MESSAGE TYPE [TheMessage] VALIDATION = NONE
--contract
CREATE CONTRACT [TheContract] ([TheMessage] SENT BY ANY);
--queue
CREATE QUEUE [TheQueue] WITH ACTIVATION
(STATUS = ON, MAX_QUEUE_READERS = 1,
PROCEDURE_NAME = TheStoreProcedure,
EXECUTE AS OWNER);
--service
CREATE SERVICE [TheService] ON QUEUE [TheQueue] ([TheContract]);
В триггере:
DECLARE @Handle UNIQUEIDENTIFIER;
BEGIN DIALOG CONVERSATION @Handle
FROM SERVICE [TheService]
TO SERVICE 'TheService'
ON CONTRACT [TheContract]
WITH ENCRYPTION = OFF;
SEND ON CONVERSATION @Handle
MESSAGE TYPE [TheMessage](N'some data');
В хранимой процедуре:
DECLARE @Handle UNIQUEIDENTIFIER;
DECLARE @MessageType SYSNAME;
RECEIVE TOP (1)
@Handle = conversation_handle,
@MessageType = message_type_name
FROM [TheQueue];
IF(@Handle IS NOT NULL)
BEGIN
-- some statements
END
Эта установка не похоже на работу. Триггер не вызывает никаких ошибок, поэтому я предполагаю, что сообщение поставлено в очередь. Но прием внутри сохраненного файла, похоже, не работает. Ни одно из моих утверждений не выполняется.