2012-09-04 3 views
2

대기열에 데이터를 삽입하려고합니다. 저장 프로 시저 fire_event가이 용도로 사용됩니다. 이 저장 프로 시저가 호출되면 해당 데이터를 큐에 삽입해야합니다. 아래는 저장 프로 시저에서 전달할 쿼리와 변수입니다. 이 저장 프로 시저를 사용하여 SQL Server의 큐에 데이터를 삽입하는 방법을 알려줄 수 있습니까? 큐에 직접 삽입하여 테이블 event_type에 삽입하는 작업을 바꿔야합니다. 감사합니다.SQL 서버 서비스 브로커의 큐에 데이터를 입력하십시오.

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 

답변

6

실제로 Service Broker를 의미하는 경우 SEND 명령을 사용해야합니다. 예를 들어

는 서비스 브로커 오브젝트 :

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) 

또는 귀하의 경우

(+ 열 별칭) :

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 @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) 
+0

Janis- 대기열에 여러 열을 삽입하는 방법을 알려주시겠습니까? 데이터를 큐에 삽입 할 저장 프로 시저는 다음과 같습니다. – user1646814

+0

"여러 행 삽입"할 수 없습니다. 대기열에 나타날 메시지를 보낼 수 있습니다. 메시지는 xml 일 수 있으며, 원하는 내용이나 이진 데이터가 들어 있습니다. –

0
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  
관련 문제