2

データをキューに挿入しようとしています。ストアドプロシージャfire_eventは、この目的で使用されます。このストアドプロシージャが呼び出されるたびに、そのデータがキューに挿入されます。以下は、ストアドプロシージャから渡されるクエリと変数です。このストアドプロシージャを使用してSQLServerのキューにデータを挿入する方法を教えてもらえますか。テーブル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 
4

2 に答える 2

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])

メッセージを送信するには:

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)
于 2012-09-05T08:16:37.800 に答える
-1
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    
于 2012-09-05T17:50:25.887 に答える