Multiple SQL Receive Locations with same URI different InboundId..when disabled/enabled triggers others as well
I have got multiple sql receive locations (typed polling) which calls the same stored proc but with different parameters in BTS 2010. Let's say they all have available statement as "Select 1" so whenever they are triggered they will call the sp and that always results return as well.
In order to get multiple sql receive locations point to same db/sp I have appended dummy parameter in URI e.g. mssql://.//BTTest?InboundId=Test, mssql://.//BTTest?InboundId=Test&1 etc..
Everything is working fine and polling also happens at the scheduled time/interval for last six months but while testing something else I just noticed that if disable/enable any one of this receive location all others are also triggered i.e. if I have 5 such receive location and all 5 are enabled but if I disable/enable 1 of them it triggers other 4 as well...
Has any one noticed this behaviour before? Is there any solution to this or am I missing anything here?
I am trying to involve someone familiar with this topic to further look at this issue. There might be some time delay. Appreciate your patience.
As per the problem description, I tried to replicate the issue at my side. I have created a polling sample and created multiple receive locations calling the same Db and the SP. I have used different InboundId in all the receive location. I have used WCF custom adapter and in Binding - Typed polling.
I see the similar behavior as pointed by you if I do not configure the PolledDataAvailable statement and the PollingStatement. If both these parameters are configured, even if they have the same value, you would be able to enable/disable the receive locations without any problem.
Make sure that the PolledWhileDataAvailable Statement is configured in all the receive locations.
Let me know your observations once you try that out.
Thank you for looking in to this and your updates.
In my case both PolledDataAvailable statement and the PollingStatement are configured for all the receive locations.
PolledDataAvailable statement - is configured to check if table has a particular record (this will always return true because table has static values. you can think of this as SELECT 1)
PollingStatement - is configured to select a record (this will always a record with updated values).
I'll try to re-test the scenario and post an update later.
I have tested the scenario you mentioned i.e. DataAvaliableStatement has a extra filter while selecting the records and then if I enable and disable one of the receive location it doesn't trigger any other receive location.
But as I mentioned in earlier in our case DataAvaliableStatement(s) for all the receive locations is to check if a table has a particular static value or not (you can imagine this as a nearly SELECT 1 statement because static value will be always there in the table) and hence enabling/disabling one of the them affects others as well.
Your findings would be right as using SELECT 1 is equivalent to not having the PollWhileDataAvailable statement at all. We already verified that in those scenario enabling/disabling of one receive location would trigger the other receive location as well.
I would suggest you to form a proper PollWhileDataAvailable statement in order to get past the issue.
However, from a support perspective this is really beyond what we can do here in the forums. If you cannot determine your answer here or on your own, consider opening a support case with us.
Visit this link to see the various support options that are available to better meet your needs: http://support.microsoft.com/default.aspx?id=fh;en-us;offerprophone
I am encountering the same issue. When I enable/disable any SQL receive location within the same port all SQL receive locations are triggered.
I don't really need a PollWhileDataAvailableStatemnt since I need to poll them every hour irrespective. Although I still created a stored procedure to return me 1.
Any help resolving this odd behavior would be appreciated.