none
Data base functoid not able to consuming in Custom XSLT RRS feed

  • Question

  • Hi ,

    I am able to consuming Database functoid in .btm file (in grid design), but If I created XSLT from same ".btm" file and attaching as CustomXSLT file then it is not working . Can anyone share which assembly, i need to add as external extension.? or any other process to run database functoid in custom xslt ?

    Thanks in advance.

    Regards,

    kalyan.

    Monday, May 16, 2016 2:57 PM

Answers

  • Are you getting this when you debug the map and you get this error ""Cannot find a script or an extension object associated with namespace 'http://schemas.microsoft.com/BizTalk/2003/ScriptNS0'."".

    The problem here is that while debugging the XSLT, it not able to find the Custom Extension Objects. Databaselookup functiods are implemented in external functions, in a separate assembly. When you validate the map, this would have generated the XSLT (which you used to debug) and also custom Extension Object XML which contains the reference for the base Microsoft.BizTalk.BaseFunctoids under namespace "'http://schemas.microsoft.com/BizTalk/2003/ScriptNS0". When you debug the XSLT, you're not passing the reference to this custom Extension Object, hence you get this error.

    Refer for the 2 workarounds: https://sandroaspbiztalkblog.wordpress.com/2012/07/30/biztalk-mapper-custom-extension-xml-property-fixed-with-powershell-script-biztalk-2010/ 


    Rachit Sikroria (Microsoft Azure MVP)

    • Marked as answer by BizDevmks Wednesday, May 18, 2016 12:55 PM
    Monday, May 16, 2016 5:23 PM
    Moderator
  • I always warn about trying predict or guess about 'performance' issues, but database connections is one of a few things that are notably expensive no matter what.  Add to that that the Database Functoids don't do a caching and you'll understand why they've never been in favor among BizTalk Devs.

    In situations like this, I always pre-lookup the values and pass them into the map, usually as a second input.  That way, the database is hit only once vs. once per record.

    • Marked as answer by BizDevmks Saturday, May 21, 2016 9:50 AM
    Thursday, May 19, 2016 11:51 AM
    Moderator

All replies

  • Are you getting this when you debug the map and you get this error ""Cannot find a script or an extension object associated with namespace 'http://schemas.microsoft.com/BizTalk/2003/ScriptNS0'."".

    The problem here is that while debugging the XSLT, it not able to find the Custom Extension Objects. Databaselookup functiods are implemented in external functions, in a separate assembly. When you validate the map, this would have generated the XSLT (which you used to debug) and also custom Extension Object XML which contains the reference for the base Microsoft.BizTalk.BaseFunctoids under namespace "'http://schemas.microsoft.com/BizTalk/2003/ScriptNS0". When you debug the XSLT, you're not passing the reference to this custom Extension Object, hence you get this error.

    Refer for the 2 workarounds: https://sandroaspbiztalkblog.wordpress.com/2012/07/30/biztalk-mapper-custom-extension-xml-property-fixed-with-powershell-script-biztalk-2010/ 


    Rachit Sikroria (Microsoft Azure MVP)

    • Marked as answer by BizDevmks Wednesday, May 18, 2016 12:55 PM
    Monday, May 16, 2016 5:23 PM
    Moderator
  • So...can we help you address another issue?  The Database Functoids are almost always not the right choice.

    Can you describe you situation?  Maybe we can give you some alternative guidance.

    Monday, May 16, 2016 5:24 PM
    Moderator
  • Hi Johns,

    My issue was fixed by attaching "ExtensionObjects" file which holds required assembly information.

    Reason to used database functoid is, we need to get one value based on one field in source schema data from local database.  Can you please share alternative idea for database functoid ? does it connecting db using SQL adapter and getting data using SP ?. Any performance disadvantages are there using DBfunctoid? 

    Thursday, May 19, 2016 8:55 AM
  • I always warn about trying predict or guess about 'performance' issues, but database connections is one of a few things that are notably expensive no matter what.  Add to that that the Database Functoids don't do a caching and you'll understand why they've never been in favor among BizTalk Devs.

    In situations like this, I always pre-lookup the values and pass them into the map, usually as a second input.  That way, the database is hit only once vs. once per record.

    • Marked as answer by BizDevmks Saturday, May 21, 2016 9:50 AM
    Thursday, May 19, 2016 11:51 AM
    Moderator