在sql server服务代理中将数据插入队列

use*_*814 2 sql service-broker sql-server-2008

我试图将数据插入队列.存储过程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 
Run Code Online (Sandbox Code Playgroud)

Jān*_*nis 6

如果您的意思是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])
Run Code Online (Sandbox Code Playgroud)

发送消息:

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)
Run Code Online (Sandbox Code Playgroud)

或者在你的情况下(+列别名):

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)
Run Code Online (Sandbox Code Playgroud)