[英]insert data into queue in sql server service broker
我正在嘗試將數據插入隊列。 存儲過程fire_event將用於此目的。 每當調用此存儲過程時,都應將數據插入隊列。以下是將從存儲過程傳遞的查詢和變量。 有人可以告訴我如何使用此存儲過程將數據插入SQL Server的隊列中。 我想通過將表event_type直接插入隊列中來替換插入事件的操作。 謝謝
BEGIN
INSERT event_type
VALUES (@p_message_id,@p_event_type,@p_classifier,
@p_event_time,@p_correlation_id,@p_person_id,@p_channel_id,
@p_source_address_id,@p_agent_user,
@p_agent_channel_id,@p_device_os,@p_device_os_version,
@p_device_manufacturer,@p_device_model,@p_product_id,
@p_event_source,@p_event_version,
@p_node_id,@p_user_agent_string,@p_event_data)
END
如果您真的是Service Broker,那么應該使用SEND命令。
例如,Service Broker對象:
Create Queue MyTableQueue;
Create Service MyTableService On Queue MyTableQueue([DEFAULT])
Create Queue ProcessQueue;
Create Service ProcessService On Queue ProcessQueue([DEFAULT])
發送消息:
Declare @h UniqueIdentifier;
Declare @doc xml;
Set @doc =
(
Select 'Hello' Msg
For XML Raw, Elements, Type, Root('Data')
);
Begin Dialog Conversation @h
From Service MyTableService
To Service 'ProcessService'
With Encryption = OFF;
Send On Conversation @h(@doc)
或您的情況(+列別名):
Declare @h UniqueIdentifier;
Declare @doc xml;
Set @doc =
(
Select @p_message_id,@p_event_type,@p_classifier,@p_event_time,@p_correlation_id,@p_person_id,@p_channel_id,@p_source_address_id,@p_agent_user,
@p_agent_channel_id,@p_device_os,@p_device_os_version,@p_device_manufacturer,@p_device_model,@p_product_id,@p_event_source,@p_event_version,
@p_node_id,@p_user_agent_string,@p_event_data
For XML Raw, Elements, Type, Root('Data')
);
Begin Dialog Conversation @h
From Service MyTableService
To Service 'ProcessService'
With Encryption = OFF;
Send On Conversation @h(@doc)
CREATE PROCEDURE [dwhuser].[put_event]
@p_message_id nvarchar(256),
@p_event_type nvarchar(256),
@p_classifier nvarchar(256),
@p_event_time datetime,
@p_correlation_id nvarchar(256),
@p_person_id nvarchar(256),
@p_channel_id nvarchar(256),
@p_source_address_id nvarchar(256),
@p_agent_user nvarchar(256),
@p_agent_channel_id nvarchar(256),
@p_device_os nvarchar(256),
@p_device_os_version nvarchar(256),
@p_device_manufacturer nvarchar(256),
@p_device_model nvarchar(256),
@p_product_id nvarchar(256),
@p_event_source nvarchar(256),
@p_event_version nvarchar(256),
@p_node_id nvarchar(256),
@p_user_agent_string nvarchar(2000),
@p_event_data VARBINARY(MAX)
AS
BEGIN
BEGIN TRY
INSERT [aq_event_type]
VALUES (@p_message_id,@p_event_type,@p_classifier,@p_event_time,@p_correlation_id,@p_person_id,@p_channel_id,@p_source_address_id,@p_agent_user,
@p_agent_channel_id,@p_device_os,@p_device_os_version,@p_device_manufacturer,@p_device_model,@p_product_id,@p_event_source,@p_event_version,
@p_node_id,@p_user_agent_string,@p_event_data)
END TRY
BEGIN CATCH
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.