none
EqualsPredicate table warning in BHM RRS feed

  • Question

  • Hi all,

    We are getting following yellow warning regarding Equals Predicate table of BizTalkMsgBoxDb:

    "Found more than %THRESHOLD_YELLOW% records having same uiprodID and value: Can impact seriously MsgBox Performances - You maybe broadcast too many messages if you use for example non-unique correlationID"

    The following can be seen in BHM report but no maintenance/terminator task can be found to tackle the same.

    The count keeps changing (Increase or decrease) everyday. 

    One more observation, earlier we use to get "Subscription w/o instances" warning everyday but it got vanished just after we got this warning. Is there any relation between the two?

    Please guide what should be done so that it won't affect performance of production environment at later stage.

    Thursday, January 12, 2017 7:23 AM

Answers

  • Hi Pratibha,

    Do you have PurgeSubscriptionsJob_BizTalkMsgBoxDb job running successfully? This job Purges unused subscription predicates from the BizTalkMsgBoxDb database. If the job runs successfully you dont need to worry much about it.

    In BizTalk MsgBox Db, you have EqualsPredicates and few other tables, these tables of Predicate SQL tables  which match all of the possible subscription expression combinations. At runtime when message is reaches the MessageBox the bts_FindSubscriptions stored procedure  queries the Subscription and Predicate SQL tables to identify potential subscribers.

    The basic structure of these tables are the same, are in accordance with what attributes (the property GUID) + predicate (equal to, greater than, less than.) + The value of the property form. Look at the data structure of these tables:

    uidPropID - the GUID of the property. All of the properties has its own GUID, similar to the receive port, receive adapter type system properties, or attributes from the schema upgrade.

    vtValue - value of the property

    uidPredicateGroupID - a set of predicates ID, a subscription can have multiple conditions predicate, this field represents the same set of conditions, the conditions can be divided into conditions and with the conditions, the combination of conditions in the Subscription table and predicate table through PredicateGroup Table between the composition.

    As per your screenshot:

    uidPropID - B8F0EBDC-7D03-47E8-AA27-B79EA3CACA6B is for BizTalkControl Class which represents the controls used in the BizTalk Server.

    vtValue - ChacheRefresh is for Cache Manager subservice of BizTalk. The Cache Manager creates a single subscription that selects messages with a 'BizTalkControl' property with a value of 'CacheRefresh'.   BizTalk uses the MessageBox to route internal control messages.

    You can read more about it here: http://geekswithblogs.net/cyoung/archive/2004/06/23/7007.aspx


    Rachit Sikroria (Microsoft Azure MVP)

    Thursday, January 12, 2017 8:08 AM
    Moderator
  • These look like Caching instance(internal to BizTalk) entries. In most cases, you can ignore these. 

    If the value for this does not keep increasing gradually over time, you can ignore this warning.


    Thanks Arindam

    Thursday, January 12, 2017 8:10 AM
    Moderator
  • Pratibha,

    Every BizTalk artifact and system properties has been assigned a GUID globally. uidPropID represents that artifiact's GUID.


    Like for example: SP Name which represents the send port name has PropertyGuidAttribute = e65126dd-9579-421d-9ee8-eb17904113dd

    ReceivePortName which user-friendly name of the receive port has PropertyGuidAttribute = 798d8a34-3a4e-4dd9-8ab5-99ad2aeb16e5

    MessageType which represents a message context property that identifies the type of the message used for routing and correlation has PropertyGuidAttribute = f4e068c3-48ae-49ec-8cca-fb3b542348b2


    Rachit Sikroria (Microsoft Azure MVP)

    Thursday, January 12, 2017 10:23 AM
    Moderator

All replies

  • Hi Pratibha,

    Do you have PurgeSubscriptionsJob_BizTalkMsgBoxDb job running successfully? This job Purges unused subscription predicates from the BizTalkMsgBoxDb database. If the job runs successfully you dont need to worry much about it.

    In BizTalk MsgBox Db, you have EqualsPredicates and few other tables, these tables of Predicate SQL tables  which match all of the possible subscription expression combinations. At runtime when message is reaches the MessageBox the bts_FindSubscriptions stored procedure  queries the Subscription and Predicate SQL tables to identify potential subscribers.

    The basic structure of these tables are the same, are in accordance with what attributes (the property GUID) + predicate (equal to, greater than, less than.) + The value of the property form. Look at the data structure of these tables:

    uidPropID - the GUID of the property. All of the properties has its own GUID, similar to the receive port, receive adapter type system properties, or attributes from the schema upgrade.

    vtValue - value of the property

    uidPredicateGroupID - a set of predicates ID, a subscription can have multiple conditions predicate, this field represents the same set of conditions, the conditions can be divided into conditions and with the conditions, the combination of conditions in the Subscription table and predicate table through PredicateGroup Table between the composition.

    As per your screenshot:

    uidPropID - B8F0EBDC-7D03-47E8-AA27-B79EA3CACA6B is for BizTalkControl Class which represents the controls used in the BizTalk Server.

    vtValue - ChacheRefresh is for Cache Manager subservice of BizTalk. The Cache Manager creates a single subscription that selects messages with a 'BizTalkControl' property with a value of 'CacheRefresh'.   BizTalk uses the MessageBox to route internal control messages.

    You can read more about it here: http://geekswithblogs.net/cyoung/archive/2004/06/23/7007.aspx


    Rachit Sikroria (Microsoft Azure MVP)

    Thursday, January 12, 2017 8:08 AM
    Moderator
  • These look like Caching instance(internal to BizTalk) entries. In most cases, you can ignore these. 

    If the value for this does not keep increasing gradually over time, you can ignore this warning.


    Thanks Arindam

    Thursday, January 12, 2017 8:10 AM
    Moderator
  • Hi Rachit, Arindam,

    Thank you for your response.

    @Rachit - All the jobs are running successfully.

    As suggested by both of you, i'll ignore the warning for now and monitor it for gradual increment. Could anyone of you let me know how to know which uidPropID represents what?

    Thursday, January 12, 2017 9:48 AM
  • Pratibha,

    Every BizTalk artifact and system properties has been assigned a GUID globally. uidPropID represents that artifiact's GUID.


    Like for example: SP Name which represents the send port name has PropertyGuidAttribute = e65126dd-9579-421d-9ee8-eb17904113dd

    ReceivePortName which user-friendly name of the receive port has PropertyGuidAttribute = 798d8a34-3a4e-4dd9-8ab5-99ad2aeb16e5

    MessageType which represents a message context property that identifies the type of the message used for routing and correlation has PropertyGuidAttribute = f4e068c3-48ae-49ec-8cca-fb3b542348b2


    Rachit Sikroria (Microsoft Azure MVP)

    Thursday, January 12, 2017 10:23 AM
    Moderator
  • Hi Rachit,

    I have a very large number of rows in the NotEqualsPredicates table, 392260, and is showing up as a warning in Biztalk Health Monitor.

    I ran the PurgeSubscriptionsJob_BizTalkMsgBoxDb job in the database, then run the Analyze report on BHM but I'm still having the same problem, with the same number of rows in the table.  

    Is there any other way to purge this table?

    Thanks


    Thursday, January 10, 2019 2:55 AM