Service Broker In Data Push Scenario:best Practice

May 7, 2007

Hallo I need some hints because I would like to set up my service broker in the proper way.

First: I'm going to setup service Broker between 2 databases on the same sql server instance.

My Goal: I insert the data on table1 in the DB1.On table1 there is a trigger that begin conversation and send the message to the service on the DB2.
On the receiving queue there is an Activation that take the xml message, shred it and save the content on th table 2 on the DB2.
Actually this SP is my main concern because the shred and insert involves also several checks so it could take "a while".

Volume of data: it seems that there are 100-200 daily insert in the table1 on the DB1 and it is possible that some of them arrives at the "same time".

Very quickly:
On the DB1 the trigger:

Notice that I reuse always the same conversation and the send queue as RETENTION = OFF


begin transaction;

begin

set @dialog_handle = (select conversation_handle from sys.conversation_endpoints where far_service='ReceiveService');



if @dialog_handle is null

BEGIN

BEGIN DIALOG CONVERSATION @dialog_handle

FROM SERVICE [SendService]

TO SERVICE 'ReceiveService'

ON CONTRACT [MainContract]

WITH ENCRYPTION = OFF;

END

SEND ON CONVERSATION @dialog_handle

MESSAGE TYPE Message ('uyiuy')

commit;

END


On the DB2
ReceiveQueue is defined as:

CREATE QUEUE [dbo].[ReceiveQueue] WITH STATUS = ON , RETENTION = OFF , ACTIVATION ( STATUS = ON , PROCEDURE_NAME = [dbo].[OnReceivedTrade] , MAX_QUEUE_READERS = 100 , EXECUTE AS N'dbo' ) ON [PRIMARY]



But most important is the Activation's SP and this is the main code:

while (1 = 1)

begin

begin transaction

-- Receive the next available message from the queue

WAITFOR (

RECEIVE top(1)
@message_type=message_type_id,

@message_body=message_body,

@dialog = conversation_handle
FROM ReceivedQueue

)
if (@@ROWCOUNT = 0)

BEGIN

Rollback Transaction

BREAK

END



SET @ErrorSave = @@ERROR ;

IF (@ErrorSave <> 0)

BEGIN

ROLLBACK TRANSACTION ;

SET @ErrorDesc = N'An error has occurred.' ;

END CONVERSATION @dialog

WITH ERROR = @ErrorSave DESCRIPTION = @ErrorDesc ;

INSERT INTO [dbo].[tblLog] VALUES(@ErrorDesc,NULL)

END

ELSE



BEGIN

'this is the SP that does most of the work

exec [dbo].[sp_ShredXMLMessageToRelationalData] @message_body

END

commit transaction



I have to say that everything works fine but I don't think that it is completly performant.
I read several blogs/forums and now I'm confused on the best way to implement service broker messaging:
These are my questions:

1) I read that is the DB's are in the same instance It can improve performances the send the message directly on the Queue2.
Can be useful in my case? How to implement it?
2)In my case it is necessarly that I send a message back to the initiator?
3) In my case the conversation never end. I don't think that this is correct but in case of the data push who has to END the conversation? The target? the initiator? never end to avoid overhead (I read that big overhead is caused by the BEGIN and END DIALOG)?

3) where (initiator or Target) and how to handle the service broker error? In my case my applications are SPs and I need to inform the developer or DBA that something went wrong during the processing ( conversation or shredding stored procedure).

4) In my case is should be a good idea to think about how to solve the possibility of the "poison messages"



for sure I will find out other questions...
Any hint, link is appreciated!

Thank you very much!

Marina B.

View 17 Replies


ADVERTISEMENT

Is This A Good Scenario For A Service Broker Application Usage

Jan 23, 2007

Hi,

Please excuse me if I get some terms wrong - I am not a developer!!

I am working for a company who has a requirement to interface to a customer to query for work. The customer has an established Web Services that it uses for external interfacing, these services are passive at their end, in that it will be my clients who initiate all the communications using SOAP, receiving responses in XML.

There are, as I see it, seven conversations.

Receiving Datasets


1. Requests All new Jobs - This will be a post to a HTP with a list of job numbers sent back, These jobs will then need to be polled from the same webservice.

2. Job Changes - existing jobs that have changed definitions (costs etc..)- simular to above

3. Job Changes - Appointment Times

Sending Datasets


1. Completed Jobs - one at a time

2. Cancelled Jobs

3. Appointments (I believe this is responses to 1 and 3 above)

4. Subsequent Jobs - new work derived from initial Job.

I believe the sending datasets will be one way only (ie POST).



I have suggested using Service Broker for this application, with a custom App sitting inbetween ServiceBroker and the Web Service to deal with the HTTP POSTS and GETS, and communicating with the Service Broker, posting to queues and reading from them.

Is this viable??

Many Thaks



Lawrenso

View 1 Replies View Related

How To Prevent The Hang On The Initator Service Broker If The Target Service Broker Is Not Started?

Sep 10, 2007

How to prevent the hang on the initator service broker if the target service broker is not started?

Our case has two service brokers (two databases), sometime, the target is need to turn off. But the sitation is the initator service broker (in fact, the message is sent from triggers) become hang, I want to prevent this case and continue to operation, and the messages should queue and will continue to send to target service broker when it startup. How should I do?

View 3 Replies View Related

Best Practice For This SP Scenario !

Oct 10, 2005

Hello All ..
This is the scenario I'm having :
-- I'm a beginner so bear the way I'm putting it ... sorry !

* I have a database with tables
- company: CompanyID, CompanyName
- Person: PersonID, PersonName, CompanyID (fk)
- Supplier: SupplierID, SupplierCode, SupplierName, CompanyID (fk)

In the Stored Procedures associated (insertCompany, insertPerson, insertSupplier), I want to check the existance of SupplierID .. which should be the 'Output' ...

There could be different ways to do it like:
1) - In the supplier stored procedure I can read the ID (SELECT) and :

if it exists (I save the existing SupplierID - to 'return' it at the end).
if it doesn't (I insert the Company, the Person and save the new SupplierID - to 'return' it at the end)
------------------------------------
2) - Other way is by doing multiple stored procedures,
. one SP that checks,
. another SP that do inserts
. and a main SP that calls the check SP and gets the values and base the results according to conditions (if - else)

3) it could be done (maybe) using Functions in SQL SERVER...

There should be some reasons why I need to go for one of the methods or another method !
I want to know the best practice for this scenario in terms of performance and other issues - consider a similar big scenario ..... !!!

I'll appreciate your help ...
Thanks in Advance . ! .

View 1 Replies View Related

Best Practice For Database Design Scenario

Sep 26, 2007

Hi,

I'm currently building a database that is going to have at least 6 different types of users accessing it via a web application.

A user will have different information collected about them. A few of of the users will have the same or similiar information collected about them.

I will be using role based authentication.

Now my query is this;

Scenario 1:
Would it be a good idea to keep all the users common information in one table. Ie. thier username,email,password,name. Then create a tblDetails for each type of user that would contain the different data. That way i can just check one table to verify thier login credentials.

OR
Scenario 2:
Would it be best to create a seperate table for each type of user and then log them in based on the credentials stored in each type of users respective table.

Hope this is clear. I'm leaning towards scenario 1, although I've used scenario 2 before. Just wondering which would be preferred.

Cheers
RobC

View 2 Replies View Related

The SQL Server Service Broker For The Current Database Is Not Enabled, And As A Result Query Notifications Are Not Supported. Please Enable The Service Broker For This Database If You Wish To Use Notifications.

Feb 16, 2008

Hello,          I receive this error  "The SQL Server Service Broker for the current database is not enabled, and as a result query notifications are not supported.  Please enable the Service Broker for this database if you wish to use notifications." I attach the database in Management Studio to query and enable the broker using the scrip below but to no avail. ALTER DATABASE DataName SET ENABLE_BROKER ‘''<<------successfulandSELECT is_broker_enabled FROM sys.databases WHERE name = 'Database name' ‘'''<<-------value is 1 Global.asax ...    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)        System.Data.SqlClient.SqlDependency.Start(ConfigurationManager.ConnectionStrings("dataConnectionString1").ConnectionString)    End Sub...Web.config ...    <connectionStrings>        <add name="dataConnectionString1" connectionString="Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|jbp_data.mdf;Integrated Security=True;User Instance=True"         providerName="System.Data.SqlClient" />        <add name="ASPNETDBConnectionString" connectionString="Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|ASPNETDB.MDF;Integrated Security=True;User Instance=True"         providerName="System.Data.SqlClient" />    </connectionStrings>... Hope you could help.  cheers,imperialx 

View 1 Replies View Related

Considering Service Broker For Auditing Biz Object Data, The Right Choice?

Sep 6, 2007

We have several applications that work with product catalog data. Data is entered and maintained, searched, and reported on. We're using CSLA business objects to create our Biz Objects and our front end apps are ASP.NET pages and web services. SQL 2k5 is our database. Currently all data is done in Factory methods in our business objects using SQL Stored Procedures and UDF's.

We want to start storing auditing and statistics data on our product searches. In SQL 2k we were using SQL Profiler to capture data and storing the information in tables, but it really wasn't very flexible and was difficult to maintain. What we want to do is every time someone submits a search we store the critiera and the results. Every time someone edits a product we want to save the old record. This will allow us to provide historical reporting and statistical reporting to our users.

In our old system the search results table was at about 3 million records. And since we've moved to a web based application we're hoping to save this information asynchronously so our search results or postbacks are not held up by saving this audit data. We were talking about writing logic into our biz objects code but it all seemed a bit slow and difficult to do asynchronously. Then I read a couple posts suggesting Service Broker.

Now we're considering either writing triggers on our tables or adding code to our factory stored procedures to send messages to Service Broker that would save the data into our audit tables but not hold up our business processes. We would be saving to the same database on the same server, but different tables.

Does Service Broker seem like it could be the right tool for this job? There looks like a bit of a learning curve and before I jump in i'm looking for some advice or direction.

Thanks, larry

View 1 Replies View Related

Architectural (broker) Place Of SQL Service Broker

Apr 5, 2007

Hi,



I am struggling with the position SSB could take in an SOA. If I would want a broker in the general sense, meaning an intermediary sitting between applications which exchange information through messaging, would SSB be a good candidate? I know Biztalk is probably the primary candidate, but in my scenario I would end up with Biztalk apps with empty orchestrations. Also, I think Biztalk is more expensive to manage. So I am looking for a lightweight broker for a simple SOA targeted at application interoperability, no fancy business processes in sight.



I look forward to some responses.



Kind regards,

Neeva

View 2 Replies View Related

Dont Service Broker And Replication Serve The Same Purpose When Used To Ship Data?

Dec 17, 2007

when shipping data from one place to another, without complicated merge needs, do service broker and replication differ in what they offer?

View 4 Replies View Related

SQLCLR +Enterprise Library Data Access And Service Broker Internal Activation

Mar 10, 2007

I am trying to find a solution to my woes creating CLR activation stored procedure that references Enterprise library data access dlls. Does anyone know best practices to deploy .NET 2.0 assemblies as SQLCLR. I am using VS2005 SqlClrProject to deploy my .NET 2.0 assemblies to Sql Server and it fails with error such as "Assembly was not found in the sql catalog". If I manually try to load a referenced assembly within SqlServer by browsing to the target location, like for example, System.Management.dll it fails with similar error, trying to resolve its dependencies. Even if I manage to walk through the dependency tree and resolve it to the final dependent dll, I am only able to load it in "UNSAFE" mode. Any recommendations, suggestions and feedback are welcome.



Thanks in advance.

View 4 Replies View Related

Service Broker TO Service Could Not Be Found Message Origin: Transport

Mar 30, 2007

I am trying to send a message between to SQL Server 2005 instances on two different machines. I have checked all my routes and all my objects appear to be setup correctly. However, when running Profiler on the target machine, I receive the "This message has been dropped because the TO service could not be found. Service name: "[tcp://mydomain.com/TARGET/MyService]". Message origin: "Transport". This is my activated stored procedure that is sending the message to the target service. I am using certificate security. Any help appreciated....



CREATE PROCEDURE [usp_ProcessMessage]

AS

BEGIN

SET NOCOUNT ON;

DECLARE @conversation_handle uniqueidentifier

DECLARE @message_body AS VARBINARY(MAX)

WHILE (1=1)

BEGIN

BEGIN TRANSACTION;

WAITFOR(RECEIVE TOP (1)

@conversation_handle = conversation_handle,

@message_body = message_body

FROM [tcp://mydomain.com/INITIATE/MyQueue]

), TIMEOUT 1000;

IF (@@ROWCOUNT = 0)

BEGIN

COMMIT;

BREAK;

END

END CONVERSATION @conversation_handle

IF @message_body IS NOT NULL

BEGIN



BEGIN DIALOG CONVERSATION @conversation_handle

FROM SERVICE [tcp://mydomain.com/INITIATE/MyService]

TO SERVICE '[tcp://mydomain.com/TARGET/MyService]'

ON CONTRACT [tcp://mydomain.com/INITIATE/MyMessage/v1.0]

WITH ENCRYPTION = ON, LIFETIME = 600;

SEND ON CONVERSATION @conversation_handle

MESSAGE TYPE [tcp://mydomain.com/TARGET/VisitMessage]

(@message_body);

END

COMMIT;

END

END

GO



My endpoints are created like so:



CREATE ENDPOINT MyEndpoint

STATE = STARTED

AS TCP

(

LISTENER_PORT = 4022

)

FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE MasterCertificate)

GO



GRANT CONNECT TO CertOwner

GRANT CONNECT ON ENDPOINT::MyEndpoint TO CertOwner

GO



And my routes like so:



GRANT SEND ON SERVICE::[tcp://mydomain.com/INITIATE/MyService] TO CertOwner

GO

CREATE REMOTE SERVICE BINDING [MyCertificateBinding]

TO SERVICE '[tcp://mydomain.com/TARGET/MyService]'

WITH USER = CertOwner,

ANONYMOUS=OFF

CREATE ROUTE [tcp://mydomain.com/INITIATE/MyRoute]

WITH SERVICE_NAME = '[tcp://mydomain.com/TARGET/MyService]',

BROKER_INSTANCE = N'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',

ADDRESS = N'TCP://xxx.xx.xx.xx:4022'

GO

View 10 Replies View Related

Service Broker And .net Windows Service

Sep 26, 2007

I am doing some research to see if the Service Broker technology would help my company with our Enterprise application. Here is our scenario: We have a 3 tier system. The first tier needs to contact the second tier asynchronously. Hence, using queues is a good option. However, the process that needs to happen on the second tier is mostly process intensive with little database updates. Is it still worth our time to use Service Broker?

I like the concept of Activation that Service Broker provides. But, from what I am reading most of the documentation describes activation as a way to call another stored proc. I definitely dont' want to do any process intensive work on the SQL server. So here comes my question...

How would I use a windows service to listen to the activation event from the Service Broker. I could have multiple windows services watching the same queue (scalable). Would I have to handle collisions myself? If so, I think I would rather keep it simple, and just use a simple table as my queue.

Thanks for your comments in advance...
Vijay.

View 3 Replies View Related

SQL Service Broker

Apr 5, 2008

Hi to all,           I want to study Sql server Service broker, have some questions1. What is the use of service broker ?2. Where this will use ? (With example)3. How to enable Service broker? Because i have sql server 2005 version but no folder like service broker. 

View 2 Replies View Related

Service Broker Example.

Aug 29, 2006

Im having a hard time understanding everything required to create a simple Service Broker example. Can someone please assist? Source code would be ideal, but if not "do this, do that" would even be helpful.

Thanks.

View 1 Replies View Related

Service Broker

Sep 8, 2006

I am trying to implement service broker. I send a message from my application code to the database to execute a specific stored procedure. How do i return the result set obtained by the execution of the stored procedure to the application.

View 4 Replies View Related

Service Broker

May 16, 2006

My service broker seems to be broken... The database was restored from another crashed server but i have tried the

ALTER AUTHORIZATION ON DATABASE::[SPYDERONTHEWEB] TO [SA];

The error i'm getting is



Service Broker needs to access the master key in the database 'SpyderOnTheWeb'. Error code 25. The master key has to exist and th service master key encryption is required.

Error: 28054, Severity 11, State: 1.

View 4 Replies View Related

Service Broker And NAT

Sep 26, 2006

Hi

It will be great to have an update on MS plans to solve the problem of using
Service Broker for remote users who sit behind the NAT.
Any news will be appreciated.

Leonid.

View 1 Replies View Related

Service Broker

Sep 11, 2006

Hello , I am trying to Implement distribution of the Stock Quotes over the LAN(only within the Network) and showing the live changing stock Quotes on the front end (in datagrid) installed at each clients desktop.I am receiving the Stock prices over the TCP / IP from the Stock Exchange. I am recieving atleast 10-15 messages per second over the TCP / IP from the Stock Exchange. Now i need to distribute this feed to Each connected client.

I tried doing it from TCP / IP , but in vein. Can we install the SQL 2005 Database Client Version on every client and use Service broker instaed of Live TCP / IP connections programmatically?

Ideally Can i dump the meesages from Stock Exchange in to each connected client's database locally and each front end application will keep a record of all the incomming messages.i.e Front end have a notification event , it will referesh the Datagrid in Front end accordingly...

ALL my front end application are made in dot net

Pls suggest if this above workflow will help me

Yugant







View 2 Replies View Related

Service Broker + .Net 1.1

Jan 8, 2008

Hi,

Is it possible to develop Service Broker in .Net 1.1 (VS 2003)? Currently I have a project developed in .Net 1.1 and I want to add a new method utilize the message queue concept (instead of using MSMQ, using Service Broker SQL 2005), although my DB is SQL server 2005.

Thanks,

View 1 Replies View Related

How To Use Service Broker And When

Jul 3, 2007

Hi all



if any one have any white paper or artical cover this issue kindly i need it



thanks , regards

View 1 Replies View Related

Is SQl Service Broker What I Need??

May 16, 2007

Hi,



I am looking at the Service Broker as a way to notify multiple clients that there has been data changed on a table in the shared database. These clients may or may not be online. When there is a change, the notification should fire off a query to refresh the clients local cache. Is this a situation where Service Broker would help me? Can multiple clients recieve the notification at different times ( some recieve while online, some recieve when they come back online)? Any help on this would be appreciated. It seems from what I read that the messages are pulled off the queue when a notification has taken place. Is this correct? If so, can I set it to behave differently?



Thanks,

-paul

View 1 Replies View Related

Service Broker From Behind The NAT

Sep 15, 2005

Let's assume the situation: we have Initiator and Target. Target is behind ISP's NAT and can't be published outside. So, when Initiator sends a message to Target, Target will not be able to establish a backward connection and will not send an acknowledge. Initiator will retry and retry...

View 8 Replies View Related

Service Broker

Apr 26, 2008

I have tried the following, each runs successfully with no error, but nothing is in the queues, what can be the issue?
CREATE MESSAGE TYPE SentMsgType
VALIDATION = WELL_FORMED_XML;

CREATE CONTRACT MQContract
(SentMsgType SENT BY ANY );

CREATE QUEUE SentQueue
WITH
STATUS=ON, RETENTION=OFF;


CREATE QUEUE ReceivedQueue
WITH
STATUS=ON, RETENTION=OFF;

CREATE SERVICE SentService ON QUEUE SentQueue
(MQContract);

CREATE SERVICE ReceivedService ON QUEUE ReceivedQueue
(MQContract);


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[insertTrigger]
ON [dbo].[tblBBB] FOR INSERT AS
BEGIN
SET NOCOUNT ON;
DECLARE @handle uniqueidentifier
DECLARE @msgBody nvarchar(500)

select @msgBody = someString from inserted

BEGIN DIALOG CONVERSATION @handle
FROM SERVICE SentService
TO SERVICE 'ReceivedService', 'CURRENT DATABASE'
ON CONTRACT MQContract;

--Sends a message
SEND ON CONVERSATION @handle
MESSAGE TYPE SentMsgType
('<message>' + @msgBody + '</message>')
END CONVERSATION @handle WITH CLEANUP;
END


SELECT * FROM SentQueue
SELECT * FROM ReceivedQueue;

View 3 Replies View Related

Service Broker

Oct 16, 2006



How to create service broker and whic version is supported to create serveice broker.



can you plz exlain to create servece broker from the scratch



View 1 Replies View Related

Sql Dependency And Service Broker.

Feb 16, 2007

Hi everyone,
 
                  Can anyone let meknow how do i enable a service broker. I am trying to enable a service broker for an issuetracker application to get change of events in my database. When ever i try enabling it using the ALTER DATABASE [ databse] set Enable_Broker. it takes abt more that 2 hrs or more but doesnt show as enabled.
 Thanks in Advance,
 Pawan Venugopal

View 2 Replies View Related

Communicate With Service Broker In C#?

Mar 22, 2007

So SQLDependencies failed to do what I wanted them to do for my Cache Invalidating, so i'm going to humor another possibility for a half day - Triggers on my database table that communicate messages to my C# inside my ASP.NET App. Any advice on how to tap into a message queue with C#? I'm thinking that my messages could be 1 of about 100 different strings as far as what occurred on the Database Tables

View 3 Replies View Related

Service Broker Tables

Apr 25, 2006

Hi,

We have a customer whos database just grows and grows. Not the customers own tables, but the:

sys.sysconvgroup
sys.sysdesend
sys.sysdercv

And these tables are linked to the Service Broker, and according to http://msdn2.microsoft.com/en-us/library/ms179503.aspx these tables exists in every database and are used by the Service Broker.

Now to my questions =)

HOW do I delete rows from these tables? How come these tables hust grows and grows, could it be any setting in the SQL 2005 Server or is it the customer who has programmed his application wrong?

Please respond as soon as possible.

Best regards

.Henrik

View 8 Replies View Related

SQL Service Broker Vs MSMQ

Aug 23, 2006

I'm in the process of doing the initial research for the architecture of a large scale, transactional messages routing platform.

My initial
design called for a series of MSMQ queues and Windows Services, written
in C#, to process the messages in these queues. There will be incoming
and outgoing queues, queues to store unroutable messages, etc.

My
application will be routing many hundreds of thousands (and eventually
millions) of messages per day. These message are very small (< 200
bytes each) and must be routed very quickly. (<1 second processing overhead per message for high priority messages.)

Using the term
"routing" may be a bit misleading. The messages arrive via TCP socket
connections. I will just need to take in a message, examine its
intended destination, and send it to one of several outgoing socket
connections, likely on different machines. Some messages require higher priority routing than others,
but I don't need multi-hop routing or anything like that.

Of
great concern to me is that there are absolutely no single points of
failure in the system. Because of this I was considering using a combination of MSMQ and Windows Services in a Clustered environment.

Can the Service Broker provide me with this kind of functionality? If so, how well does it perform and scale? Is it a better choice for messaging applications that require high transactional throughput than MSMQ?

I'm just trying to get an idea of what products/services I should look into further.

View 15 Replies View Related

Have Problem With Service Broker Please Help Me

Feb 27, 2007

i'm new with service broker and need to develop mail site to send mass email and decide to use sevice broker i'm make aqueue ,sevice and all function for run service borker and creat databasie mail profile

then test it but it's don't work please help me to fine what's the problem ?

thanks very mcuh for every one read my request and response to me thanks very mcuh

View 3 Replies View Related

Service Broker End Conversation

Jan 17, 2007

Hello people

I am new to service broker and would like a little help please. I have a SP which gathers information from a collection of tables. Depending on the data gathered it may or may not begin a dialog conversation with a service broker queue. What i'm needing to know is should at the end of the SP once the required message has been sent should i end the conversation or not?



Many thanks in advance, Michael



View 1 Replies View Related

Service Broker Permissions

Jul 3, 2007



Hi, in the development env. I created the 2 dbs used by service brokers, the service brokers objects (messages, queues etc...).

The schema applied to tables and Activation SP is [dbo] and also the queues are executed as [dbo].



Everything works fine!Cool!



Now that we have to deploy evertything on production I would like that the service broker conversation runs using a specif user ( in this way when I log the Service Broker's errot in the event log I see this specific user and not my name)



Which kind of permission I have to give to this the user .. it is enought that I assign to it the schema DBO or I have to change the definition of my queues( execute as '[dbo]') or to create a new schema?



Thankx everybody fo any help!

Marina B.

View 5 Replies View Related

Don't Get Service Broker To Work

Mar 19, 2007

Hi,

I'm not able to get Service Broker to work. I've created the following sample and would excpect to get some data from "PreisanfrageQueue" or "PreisanfrageRequestorQueue". But both they are emtpy.

What do I do wrong?

Regards,

Manfred



create message type Preisanfrage
validation = well_formed_xml;

create message type PreisanfrageAntwort
validation = well_formed_xml;

create contract PreisanfrageContract
(
Preisanfrage sent by initiator,
PreisanfrageAntwort sent by target
);



create queue PreisanfrageRequestorQueue with
status=on;

create queue PreisanfrageQueue;



create service PreisanfrageRequestorService
on queue PreisanfrageRequestorQueue ( PreisanfrageContract );


create service PreisanfrageService
on queue PreisanfrageQueue (PreisanfrageContract );

create table debug_table;
create table debug_table (id int primary key identity(1,1), msg varchar(100));

create procedure PreisanfrageAction
as
declare @conversation uniqueidentifier
declare @msg nvarchar(max)
declare @msgType nvarchar(256)
declare @answer xml;

insert into debug_table(msg) values('1');

;receive top(1)
@conversation = conversation_handle,
@msg = message_body,
@msgType = message_type_name
from PreisanfrageQueue;

insert into debug_table(msg) values('2');

-- Preisanfrage bearbeiten


set @answer = '<preis>1</preis>';
;send on conversation @conversation
message type PreisanfrageAntwort (@answer);

end conversation @conversation;

insert into debug_table(msg) values('3');

alter queue PreisanfrageQueue
with
status=on,
activation (
status=on,
PROCEDURE_NAME = PreisanfrageAction,
max_queue_readers = 100,
EXECUTE AS OWNER
);




-- Dialog starten

declare @conversation uniqueidentifier;

begin dialog conversation @conversation
from service [PreisanfrageRequestorService]
to service 'PreisanfrageService'
on contract [PreisanfrageContract];

declare @request xml;

set @request = '<?xml version="1.0" encoding="UTF-8"?><Preisanfrage xmlns="4711101'">http://www.xyz.at/samples/Preisanfrage"><KundenId>4711</KundenId><ProduktId>10</ProduktId><Anzahl>1</Anzahl></Preisanfrage>';

;send on conversation @conversation
message type Preisanfrage ( @request );

receive * from PreisanfrageQueue;

receive * from PreisanfrageRequestorQueue;


select * from debug_table


View 3 Replies View Related

SSIS And Service Broker

Feb 12, 2007

I am trying to use SSI Sto receive messages from a Service Broker Queue and continue to have difficulty doing so.

I have come to the point where I need to get the messages that share a conversation with this BatchEnd message type before I get any other messages, as this message type tells me information about how many others there are.

I built this script and ran it in management studio with success and felt it should work for me running as the sql for an OLE DB source.

declare @ch uniqueidentifier;

select @ch = conversation_handle

from dm.[consultant queue]

where message_type_name = 'BatchEnd';

Receive conversation_handle, message_type_name, message_body

from dm.[consultant queue]

where conversation_handle = @ch;

But SSIS constantly complains about it. I finally profiled SSIS to catch the sql that it is executing. It is below and this fails with an error about a missing conversation_handle.


declare @p1 int

exec sp_prepare @p1 output,NULL,N'declare @ch uniqueidentifier;

select @ch = conversation_handle

from dm.[consultant queue]

where message_type_name = ''BatchEnd'';

Receive conversation_handle, message_type_name, message_body

from dm.[consultant queue]

where conversation_handle = @ch;',1

select @p1

go



Now I'm not sure which team may own this, but shouldn't this sp_prepare work. If I change this to use a table variable then the prepare seems to work just fine, but then I never actually get any data back into SSIS. It is almost like it calls it twice; although, I could not confirm that with profiler.

I'll cross post this in the Service Broker forum too.

Thanks!

View 1 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved